我有一组矩阵,我只想提取满足条件的矩阵的一部分。
例如:150x180
矩阵的值从0
to 到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;
或者更简单,正如 Rody Oldenhuis 建议的那样,您可以将逻辑表达式直接包含在矩阵引用中:
A(A<1.66 | A>1.77) = 0;
这会产生更短、更简洁的代码,但不是更快的代码:MATLAB 仍然显式创建逻辑索引变量,但随后将其清除。