我有一个矩阵坐标,我只想提取满足条件的矩阵的一部分。
例如:150x180
矩阵的值从0
变为2.80
,我只想要1.66
和1.77
之间的值
我想将范围内的值保留在原始矩阵中的原始位置,并将另一个设置为零。
任何人都可以帮助我。
谢谢
答案 0 :(得分: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;
或者更简单,正如Rody Oldenhuis建议的那样,您可以直接在矩阵参考中包含逻辑表达式:
A(A<1.66 | A>1.77) = 0;
这会产生更短更干净的代码,但代码却不是更快:MATLAB仍会显式创建逻辑索引变量,但之后会将其清除。