平均来自 Matrix 的所有行,其中第 1 列具有相同的值(Matlab)

averaging all rows from Matrix where column 1 has the same value (Matlab)

我有一个矩阵,想对第 1 列具有相同值的所有列求平均值。例如 一个 [1 2 3; 1 2 5; 3 2 5] 第 1 列的数字是 1 的两倍,所以我想要第 1 列的数字为 1 的所有列,这样结果就是 A_new [1 2 4; 3 2 5]

最简单的方法是什么?

此外,我希望在此矩阵中,第 1 列中存在 1 和此示例中的 3 之间的每个数字,并且它应该用 NaN 填充相应的其他列。

所以结果应该是 A_new2 [1 2 4; 2 南南; 3 2 5]

这是 splitapply, together with findgroups (or unique 的工作):

A = [1 2 3; 1 2 5; 3 2 5];
[g, h] = findgroups(A(:,1)); % or [~, h, g] = unique(10*A(:,1));
result = [h splitapply(@(x)mean(x,1), A(:, 2:end), findgroups(A(:,1)))];