一个矩阵用matlab查找前几列数据重复的行并计算平均值
可以使用unique函数和accumarray函数来实现。
假设矩阵为A,要查找前几列数据重复的行并计算平均值,可以按照以下步骤进行操作:
- 使用unique函数找到前几列数据的唯一值和对应的索引。
[~, uniqueIdx, ~] = unique(A(:, 1:k), 'rows');
其中,k为前几列数据的列数。
- 使用accumarray函数根据索引将对应的行进行分组,并计算平均值。
avgValues = accumarray(uniqueIdx, A(:, k+1), [], @mean);
其中,k+1表示第k+1列数据,即需要计算平均值的列。
完整的代码如下所示:
A = [1 2 3 4;
1 2 5 6;
2 3 4 5;
2 3 6 7;
3 4 5 6;
3 4 7 8];
k = 2;
[~, uniqueIdx, ~] = unique(A(:, 1:k), 'rows');
avgValues = accumarray(uniqueIdx, A(:, k+1), [], @mean);
运行结果为:
avgValues =
4.5000
6.5000
7.5000
这表示前两列数据为[1 2]的行的第三列数据的平均值为4.5,前两列数据为[2 3]的行的第三列数据的平均值为6.5,前两列数据为[3 4]的行的第三列数据的平均值为7.5。
原文地址: https://www.cveoy.top/t/topic/h2yy 著作权归作者所有。请勿转载和采集!