Gam*_*aca 0 matlab extract matrix
我有一个矩阵坐标,我想只提取满足条件的矩阵的一部分.
例如:值150x180
矩阵,从去0
到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;
Run Code Online (Sandbox Code Playgroud)
或者更简单,正如Rody Oldenhuis建议的那样,您可以直接在矩阵参考中包含逻辑表达式:
A(A<1.66 | A>1.77) = 0;
Run Code Online (Sandbox Code Playgroud)
这会产生更短更干净的代码,但代码却不是更快:MATLAB仍会显式创建逻辑索引变量,但之后会将其清除.