平均来自 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)))];
我有一个矩阵,想对第 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)))];