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

Смежные вопросы