2013-04-09 97 views
0

我有一個關於如何在每次循環中使用不同值的問題。我有一個145波段的圖像。我計算大小,行,列數和樂隊更改Matlab中循環內的值

size=size(HYP); 
nrow= size(1); 
ncolu= size(2); 
nbands= size(3); 

我必須爲每一個波段做一個操作,然後得到的結果,但我不知道如何來自動改變值之一每一次迭代。我會試着簡化這個問題。這是我的循環。值rad1之前定義。我需要在每個循環使用之前(例如,同伴,朋友價值RAD2,RAD3 BAND3 ...)定義了一些值,並提取每一個結果(以ND2自動ND1變化等)

output= zeros(nrow,ncolu,nbands); 
for banda=1:nbands; 
     nd1= -((3.141592*rad1)/-HYP2(:,:,1)); 
output(banda,1)= (nd1); 
    end 
end 

所以,對於第一次迭代:

ND1 = - ((3.141592 * RAD1)/ - HYP2(:,:,1 )); 輸出(banda,1)=(nd1);

用於第二...

ND2 = - ((3.141592 * RAD2)/ - HYP2(:,:,)); 輸出(banda,2)=(ndnd);

之前定義了Rad1,rad 2 ... rad145等。最後,輸出將是一個145頻帶矩陣。

你知道我該怎麼做嗎?真的在此先感謝,

+1

使第二和RAD的載體?所以你有nd(banda)和rad(banda)。或者使用單元陣列。 – 2013-04-09 10:16:43

回答

5

不要嘗試使用不同的變量名稱。只要使用rad(1)rad(2)等再

output= zeros(nrow, ncolu, nbands); 
for banda=1:nbands; 
    output(:,:,banda) = -((3.141592*rad(banda))/-HYP2(:,:,1)); 
end 

(你的output初始化不順便代碼在你的循環相匹配。)

+0

嗨克里斯托弗,謝謝你的回覆。問題是,rad1,rad2等是以前定義的變量,具有不同的值。因此,例如,對於第一個波段,我需要使用rad1值,第二個rad2等。 – user1578688 2013-04-09 10:19:36

+6

更改定義這些變量的代碼。認真。這樣的變量名稱只是要求麻煩。 (不過,如果你絕對必須的話,MATLAB常見問題將告訴你如何使用它們。) – 2013-04-09 10:21:37

+0

謝謝克里斯託弗的幫助。我會嘗試它! ;) – user1578688 2013-04-09 10:25:49