作业帮 > 综合 > 作业

Matlab中某矩阵具有三列数字,如何根据前两列数字来计算第三列的平均值?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 13:41:26
Matlab中某矩阵具有三列数字,如何根据前两列数字来计算第三列的平均值?
有矩阵(三列)如下:
1 600000 3
1 600000 4
1 600000 5
1 600004 4
1 600004 5
1 600005 3
1 600005 3
1 600005 5
1 600005 4
1 600005 3
1 600005 4
1 600005 5
2 600000 4
2 600000 5
2 600000 4
2 600000 3
2 600004 5
2 600004 4
2 600005 4
2 600005 3
3 600000 3
3 600000 2
3 600000 1
3 600004 2
3 600004 3
3 600005 2
3 600005 3
我想要把一列和二列元素都相同的行对应的第三列进行平均,即要得到这样的结果:
1 600000 4
1 600004 4.5
1 600005 3.86
2 600000 4
2 600004 4.5
2 600005 3.5
3 600000 2
3 600004 2.5
3 600005 2.5
这里仅仅是例子,因为这个矩阵很长,无法一一计算,如何在matlab中编程?最好能够写成function形式,
定义函数:
 
function C = mean_zd(A)
A=sortrows(A);
idx = [0; find(any([diff(A(:,1)) diff(A(:,2))],2)); size(A,1)];
n = length(idx) - 1;
C = zeros(n,3);
for i=1:n
    B = A(idx(i)+1:idx(i+1),3);
    C(i,:) = [A(idx(i+1),1:2) mean(B)];
end
disp(num2str(C))
 
设矩阵为A,调用:
mean_zd(A);

得到:
1           600000                4
1           600004              4.5
1           600005      3.857142857
2           600000                4
2           600004              4.5
2           600005              3.5
3           600000                2
3           600004              2.5
3           600005              2.5