2012-10-08 36 views
0

我有矩陣,我只想提取滿足條件的矩陣的一部分。如何在Matlab中提取具有條件的矩陣的一部分

例如:150x180矩陣的值從02.80,我只希望這些1.661.77 我想保持穰內的值在原來的位置,原來的矩陣,將其他零之間。

任何人都可以幫助我。

謝謝

+0

使用[邏輯索引](http://stackoverflow.com/questions/11233370/logical-mask-in-matlab) – tmpearce

回答

7

您可以使用邏輯索引。首先,找到A不符合條件的條目。接着,使用A(idx)他們更改爲0:

% example matrix 
A = 2.8*rand(150, 180); 

% find entries meeting some criterion 
idx = A<1.66 | A>1.77; 
A(idx) = 0; 

或者簡單,因爲羅迪Oldenhuis建議,可以包括在基質參考直接邏輯表達式:

A(A<1.66 | A>1.77) = 0; 

這產生了更短和更乾淨的代碼,但不是更快的代碼:MATLAB仍然明確地創建了邏輯索引變量,但之後將其清除。

+0

非常感謝。 它的工作 –

+0

@AiOsaca由於你是一個新用戶,我建議你通過所有的問題,並檢查解決你的問題的答案'接受'的標誌。這就是問題和答案的功能。這會激勵他人在將來幫助你。 – angainor

+0

或跳過臨時,並做'A(A <1.66|A> 1.77)= 0' –

相關問題