如何在Matlab中提取条件的一部分矩阵

时间:2012-10-08 12:26:59

标签: matlab matrix extract

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

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

任何人都可以帮助我。

谢谢

1 个答案:

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