2016-12-05 104 views
1

我想计算矩阵的每一行和列的总和。每行和列的总和

给定一个NxN矩阵mm,有没有办法将以下代码线性化?

for jj=1:N 
    sm(jj)=sum(mm(jj,:)) + sum(mm(:,jj)); 
end 
sm = sm - diag(mm)'; 

作为一个例子:

mm=[1 2 3; 1 2 3; 1 2 3] 

mm = 

    1  2  3 
    1  2  3 
    1  2  3 


for jj=1:3 
    sm(jj)=sum(mm(jj,:)) + sum(mm(:,jj)); 
end 
sm=sm-diag(mm)' 

sm = 

    8 10 12 

回答

1

可以使用的sum第二输入来指定沿其上执行求和的尺寸矢量化这一点。

% Sum columns Sum rows  diagonal 
sum(mm, 1).' + sum(mm, 2) - diag(mm) 

% 8 
% 10 
% 12 
+0

哦,那很容易。谢谢! – shamalaia