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

Gam*_*aca 0 matlab extract matrix

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

例如:值150x180矩阵,从去02.80,我只希望那些之间1.661.77 我想保持穰内的值在原来的位置,原来的矩阵,将其他为零.

请有人帮帮我.

谢谢

ang*_*nor 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;
Run Code Online (Sandbox Code Playgroud)

或者更简单,正如Rody Oldenhuis建议的那样,您可以直接在矩阵参考中包含逻辑表达式:

A(A<1.66 | A>1.77) = 0;
Run Code Online (Sandbox Code Playgroud)

这会产生更短更干净的代码,但代码却不是更快:MATLAB仍会显式创建逻辑索引变量,但之后会将其清除.