2011-09-28 19 views
1

我有以下陣列除以陣列的選定元素Matlab的

a = [ 1 10 3 4 68 2 34 8 10 ] 

,我需要將每個數(/ 2)如果此數量是高於9 這意味着1具有不被分,和10必須被劃分(/ 2)

所得陣列應該是:

a = [ 1 5 3 4 34 2 17 8 5 ] 

我必須這樣做而無需使用FOR功能。所以,我想這一點:

a = a./2; 

這就將陣列的每一個數字,我像以前告訴過你,我要劃分只有那些高於9

誰能告訴我怎麼能我這麼做?在該陳述中添加'if whatever> 5'或其他內容?
在此先感謝

回答

4

使用邏輯索引來劃分只符合您的標準的數字,並將結果分配給這些特定的索引。

a = [ 1 10 3 4 68 2 34 8 10 ]; 
a(a>9) = a(a>9) ./ 2 
+4

+1我會將'a> 9'的結果存儲在vector中,比如'idx',並且用它來代替兩次測試 – Amro