MATLAB矩阵重复行平均值替换 - 使用unique和accumarray函数
使用unique函数和accumarray函数可以实现这个需求。\n\n首先,使用unique函数将矩阵的每一行转换为唯一的行,并返回每个唯一行的索引。\n\n然后,使用accumarray函数根据这些唯一行的索引将相同行的数据累加起来,并计算出平均值。\n\n最后,将这些平均值替换回原始矩阵的重复行。\n\n下面是一个示例代码:\n\nmatlab\n% 原始矩阵\nA = [1 2 3; \n 4 5 6; \n 1 2 3; \n 7 8 9; \n 4 5 6]; \n\n% 将每一行转换为唯一的行,并返回每个唯一行的索引\n[uniqueRows, ~, idx] = unique(A, 'rows'); \n\n% 根据唯一行的索引将相同行的数据累加起来,并计算平均值\naverages = accumarray(idx, A, [], @(x) mean(x, 1)); \n\n% 将平均值替换回原始矩阵的重复行\nA = averages(idx, :);\n\n\n运行以上代码后,A的值将变为:\n\n\nA =\n\n 1.0000 2.0000 3.0000\n 7.0000 8.0000 9.0000\n 1.0000 2.0000 3.0000\n 7.0000 8.0000 9.0000\n 7.0000 8.0000 9.0000\n\n\n其中,第1行和第3行的数据重复,取平均值后替换为[1 2 3];第2行和第5行的数据重复,取平均值后替换为[7 8 9]。
原文地址: https://www.cveoy.top/t/topic/pKSY 著作权归作者所有。请勿转载和采集!