2012-09-22 16 views
2

我期待IF語句應用到矩陣如下所示:我怎麼能申請IF語句矩陣的所有行(Matlab的)

A =

2  5  2  4  8 
2  5  0  0  0 
2  4  0  0  0 
6  8  0  0  0 
9  5  0  0  0 
4  7  0  0  0 
8  1  0  0  0 

我有什麼到目前爲止是這樣的:

if A(1,2)>A(1,4), 
A(2,3)=A(1,4); 
A(2,4)=(A(1,5))+1; 
end 


if A(1,2)<A(1,4), 
A(2,4)=(A(1,4))-1; 
A(2,4)=(A(1,4))-(A(2,3)); 
end 

在上述代碼中,我只比較第一行的第二和第四列。 然後第一行構建第二行。

我正在尋找然後比較第二行,並使用它來構建第三行......等等......貫穿全部7行。

我可以添加1:n來修改它嗎?

有什麼建議嗎?

+0

看起來不像是我。你根據A(1,4)計算A(2,4)。然後,A(3,4)將根據A(2,4)的新值計算出來。你在那裏有一個數據依賴..看起來你可能在第二條語句中有錯誤。您將兩次分配給相同的A索引。 – angainor

+0

每次循環中索引是否可以遞增1? – Kelly

回答

1

你可以寫下面的循環

for i=1:size(A, 1)-1 
    if A(i,2)>A(i,4), 
     A(i+1,3)=A(i,4); 
     A(i+1,4)=A(i,5)+1; 
    end 
    if A(i,2)<A(i,4), 
     A(i+1,4)=A(i,4)-1; 
     % wrong index here? You assign twice to the same A entry. 
     % the above line has no effect... 
     A(i+1,4)=A(i,4)-A(i+1,3); 
    end 
end 
+0

謝謝!這是我正在尋找的。是的,我在編碼方面犯了一些錯誤......試圖用這個例子來代表一個更大的矩陣。我遇到的問題是for語句和索引。這清除了一切。 – Kelly