我想根据第n + 1列的重复值对前n列进行平均

时间:2013-03-07 11:30:14

标签: matlab matrix average

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

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列重复行的平均值。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

以下单行平均列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