MATLAB:在没有循环的情况下找到矩阵中其他行的均值

MATLAB: find means of other rows in a matrix without loop

我正在优化我的代码。现在我有一个 MxN 矩阵,我想生成一个平均 MxN 矩阵,它是其他行的平均值

例如:如果我有矩阵 A:

1 2 3

3 4 5

2 3 2

在新矩阵B中,我希望每一行都是其他行的平均值。

均值(第 2 行,第 3 行)

均值(第 1 行,第 3 行)

均值(第 1 行,第 2 行)

想了很多办法,还是绕不开

    for row=1:3
        temp = A;
        temp(row,:) = [];
        B(row,:) = mean(temp);
    end

有什么想法吗?

简单 bsxfun -

B = (bsxfun(@minus,sum(A,1),A))./(size(A,1)-1)

技巧是以矢量化方式从所有行的总和中减去当前行 bsxfun,从而得到除当前行之外的所有行的总和。最后,将平均值除以行数减去 1.