MATLAB:选择除给定范围之外的所有数组



我想对不属于特定范围的数组内容执行指标。

例如,我有一个包含 1000 行和 2 列的数组。我想对一列(假设列 #2)中的所有元素执行 mean() 计算,这些元素不在 50-150、250-300、400-700 和 900-950 行中。

因此,应根据行 1-49、151-249、301-399、701-899 和 951-1000 计算均值。

有什么想法吗?

编辑:我应该指出,每次程序运行时,包含的那些项目都会更改。因此,我不能只是硬编码包含的内容;它们需要根据排除项来制定。

怎么样:

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

现在将任何函数应用于过滤后的矩阵:

mean(MM,1)

您可以定义排除范围,然后使用逻辑寻址:

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)));

最新更新