2016-12-05 76 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