0

我在其中一列中有一个重复数字的矩阵。我想对具有重复数字的行进行平均。例如,我A在第 3 列的矩阵中有重复值:

A =   
    1         2         1
    4         4         2
    5         4         2
    4         5         2
    5         5         3
    10        3         3

我想得到

B =
    1         2         1
    4.3333    4.3333    2.0000
    7.5000    4.0000    3.0000

其中每一行是第 3 列重复行的平均值。

任何人都可以帮忙吗?

4

1 回答 1

3

以下单行对 column 中具有重复值的所有行进行平均N

cell2mat(arrayfun(@(x)mean(A(A(:, N)==x,:),1), unique(A(:, N)), 'Uniform', 0))

例子

让我们按照您的示例对第 3 列中所有重复的行进行平均:

A = [1 2 1; 4 4 2; 5 4 2; 4 5 2; 5 5 3; 10 3 3];
N = 3;
B = cell2mat(arrayfun(@(x)mean(A(A(:, N)==x,:),1), unique(A(:,N)), 'Uniform', 0))

结果是:

B =
    1.0000   2.0000   1.0000
    4.3333   4.3333   2.0000
    7.5000   4.0000   3.0000
于 2013-03-07T11:52:45.100 回答