2013-04-23 32 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