2013-04-23 789 views
0

我需要连接一个类的算法,而不使用任何Matlab函数,并使用for和while循环,这给了我两个新的向量,每个向量具有每列元素的总和,并且另一个与每行中元素的总和并比较它们。使用for循环的matlab列和行元素求和

我能走到今天基于类似的代码,我在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中,我得到的每个行或列有一个元素的向量。

我很感激任何帮助。

回答

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个元素将是该行中的所有列的总和。

+0

谢谢,虽然现在我收到一条错误消息“尝试访问sumRow(2);索引超出范围,因为numel(sumRow)= 1。” – user2052579 2013-04-23 22:30:09

+0

你确定你把它正确地复制了吗?我刚刚测试过,没有任何问题。自从'i'从'1'变为'm',并且'sumRow'被初始化为长度'm',这个错误永远不会发生。 – jazzbassrob 2013-04-23 22:37:36

+0

不知道什么是错的,之后我得到了一些其他的错误,因为这两个向量是相同的,但我修改它来检查行的转置A在第二个,它的工作。非常感谢! – user2052579 2013-04-23 22:51:41