matlab列和行元素求和使用for循环

时间:2013-04-23 21:07:03

标签: matlab for-loop vector matrix sum

我需要在不使用任何Matlab函数和使用for和while循环的情况下连接类的算法,这给了我两个新的向量,一个是每列的元素之和,另一个是每行中元素的总和,比较它们。

我基于我在python中编写的类似代码得到了这一点:

A = input('Matrix Input: '); 
[m, n] = size(A);

for i = 1:m;
    sumRow = zeros(1,m);
    for j = 1:n;
        sumRow = sumRow + A(i,j);
    end;
end;
for i = 1:n;
    sumCol = zeros(1,n);
    for j = 1:m;
        sumCol = sumCol + A(j,i);
    end;
end;
A %#ok<NOPTS>
sumRow %#ok<NOPTS>
sumCol %#ok<NOPTS>

但是在Matlab中我只能在新向量中存储最后一行和最后一列中元素的总和,而在python中我得到的向量中每行或每列都有一个元素。

我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

您没有正确分配sumRow,并且每次循环时都会使用零向量进行覆盖。您的代码应如下所示:

sumRow = zeros(1,m);
for i = 1:m;
    for j = 1:n;
        sumRow(i) = sumRow(i) + A(i,j);
    end;
end;

sumCol = zeros(1,n);
for i = 1:n;

    for j = 1:m;
        sumCol(j) = sumCol(j) + A(j,i);
    end;
end;

这样,您可以在循环外部创建sumRow ,并且sumRow的i元素将是行中所有列的总和。