可以使用unique函数和accumarray函数来实现。

假设矩阵为A,要查找前几列数据重复的行并计算平均值,可以按照以下步骤进行操作:

  1. 使用unique函数找到前几列数据的唯一值和对应的索引。
[~, uniqueIdx, ~] = unique(A(:, 1:k), 'rows');

其中,k为前几列数据的列数。

  1. 使用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 著作权归作者所有。请勿转载和采集!

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