我有矩陣,我只想提取滿足條件的矩陣的一部分。如何在Matlab中提取具有條件的矩陣的一部分
例如:150x180
矩陣的值從0
去2.80
,我只希望這些1.66
和1.77
我想保持穰內的值在原來的位置,原來的矩陣,將其他零之間。
任何人都可以幫助我。
謝謝
我有矩陣,我只想提取滿足條件的矩陣的一部分。如何在Matlab中提取具有條件的矩陣的一部分
例如:150x180
矩陣的值從0
去2.80
,我只希望這些1.66
和1.77
我想保持穰內的值在原來的位置,原來的矩陣,將其他零之間。
任何人都可以幫助我。
謝謝
您可以使用邏輯索引。首先,找到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仍然明確地創建了邏輯索引變量,但之後將其清除。
非常感謝。 它的工作 –
@AiOsaca由於你是一個新用戶,我建議你通過所有的問題,並檢查解決你的問題的答案'接受'的標誌。這就是問題和答案的功能。這會激勵他人在將來幫助你。 – angainor
或跳過臨時,並做'A(A <1.66|A> 1.77)= 0' –
使用[邏輯索引](http://stackoverflow.com/questions/11233370/logical-mask-in-matlab) – tmpearce