Matlab中某矩阵具有三列数字,如何根据前两列数字来计算第三列的平均值?有矩阵(三列)如下:1 600000 31 600000 41 600000 51 600004 41 600004 51 600005 31 600005 31 600005 51 600005 41 600005 31 600005 41 600005 52 600
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 04:48:39
Matlab中某矩阵具有三列数字,如何根据前两列数字来计算第三列的平均值?有矩阵(三列)如下:1 600000 31 600000 41 600000 51 600004 41 600004 51 600005 31 600005 31 600005 51 600005 41 600005 31 600005 41 600005 52 600
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形式,
Matlab中某矩阵具有三列数字,如何根据前两列数字来计算第三列的平均值?有矩阵(三列)如下:1 600000 31 600000 41 600000 51 600004 41 600004 51 600005 31 600005 31 600005 51 600005 41 600005 31 600005 41 600005 52 600
定义函数:
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