MATLAB: Select all of an array EXCEPT in given ranges

南笙酒味 提交于 2019-12-01 08:15:18

How about:

M = rand(1000,2);
idx = setdiff(1:size(M,1), [50:150, 250:300, 400:700, 900:950]);

MM = M(idx,:)

Now apply any function to the filtered matrix:

mean(MM,1)

You can define the exclusion ranges and then use logical addressing:

LowerLimit1 = 1;
UpperLimit1 = 50;

LowerLimit2 = 151;
UpperLimit2 = 249;

LowerLimit3 = 301;
UpperLimit3 = 399;

LowerLimit4 = 701;
UpperLimit4 = 899;

LowerLimit5 = 951;
UpperLimit5 = 1000;

MyVector = MyMatrix(:,2);

MeanValue = mean(MyVector(~(MyVector > LowerLimit1 & MyVector < UpperLimit1) | (MyVector > LowerLimit2 & MyVector < UpperLimit2) |  (MyVector > LowerLimit3 & MyVector < UpperLimit3)  | (MyVector > LowerLimit4 & MyVector < UpperLimit4) | (MyVector > LowerLimit5 & MyVector < UpperLimit5)));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!