如何在MATLAB中汇总所有其他行

ljb*_*ade 4 matlab sum matrix

我还在学习MATLAB的一些高级功能.

我有一个2D矩阵,我想总结所有行,除了i.

例如

1 1 1
2 2 2
4 4 4
Run Code Online (Sandbox Code Playgroud)

说我= 2,我想得到这个:

5 5 5
Run Code Online (Sandbox Code Playgroud)

我可以通过对所有行求和,然后减去第i行来实现,但我想知道是否有更快的方法使用MATLAB的索引/选择语法.

bla*_*bla 7

似乎将所有行相加,然后减去第i行,要快得多:

A=rand(500);
n = randi(500);
tic
for i=1:1e3
%sum(A([1:n-1 n+1:end], :));
sum(A)-A(n,:);
end
toc

     Elapsed time is 0.162987 seconds.

A=rand(500);
n = randi(500);
tic
for i=1:1e3
sum(A([1:n-1 n+1:end], :));
end
toc

     Elapsed time is 1.386113 seconds.
Run Code Online (Sandbox Code Playgroud)