Matlab查找矩阵中前几列重复行的平均值

本文将介绍如何使用Matlab查找矩阵中前几列数据重复的行,并计算指定列的平均值。

步骤:

  1. 使用unique函数找到前几列数据的唯一值和对应的索引。

    matlab [~, uniqueIdx, ~] = unique(A(:, 1:k), 'rows');

    其中,A为目标矩阵,k为前几列数据的列数,uniqueIdx为每个唯一行在原矩阵中的索引。

  2. 使用accumarray函数根据索引将对应的行进行分组,并计算平均值。

    matlab avgValues = accumarray(uniqueIdx, A(:, k+1), [], @mean);

    其中,k+1表示需要计算平均值的列,avgValues为每个唯一行对应列的平均值。

**完整代码示例:**matlabA = [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);

disp(avgValues);

运行结果:

4.5000    6.5000    7.5000

结果解读:

  • 前两列数据为[1 2]的行的第三列数据的平均值为4.5。- 前两列数据为[2 3]的行的第三列数据的平均值为6.5。- 前两列数据为[3 4]的行的第三列数据的平均值为7.5。

总结:

通过uniqueaccumarray函数的结合使用,我们可以方便地在Matlab中查找矩阵中前几列数据重复的行,并计算指定列的平均值。这一技巧在数据分析和处理中非常实用。


原文地址: https://www.cveoy.top/t/topic/fLK2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录