0

我有一组矩阵,我只想提取满足条件的矩阵的一部分。

例如:150x180矩阵的值从0to 到2.80,我只想要介于之间的值1.661.77 我想将范围内的值保留在原始矩阵中的原始位置,并将另一个设置为零。

任何人都可以帮助我吗?

谢谢

4

1 回答 1

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 仍然显式创建逻辑索引变量,但随后将其清除。

于 2012-10-08T12:38:07.217 回答