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
.
我正在优化我的代码。现在我有一个 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
.