多个数组的索引满足matlab中的条件

时间:2017-01-19 00:49:02

标签: arrays matlab

我有3个巨大的阵列:Array1Array2Array3。所有尺寸相同,尺寸为7000000x1

我试图在Matlab中使用find命令找到满足常见条件的数组的索引,我这样使用

I2 = find (Array1 > a1 & Array1 < a2 & ...
           Array2 > b1 & Array2 < b2 & ...
           Array3 > c1 & Array3 < c2 ); 

a,b和c都包含标量值。

I2在for循环中(~7M迭代),此操作需要大量时间!有关改进这行代码的任何建议吗?

1 个答案:

答案 0 :(得分:0)

这可能更快,使用逻辑索引而非find

% Set up array of indices
I = 1:numel(Array1);

% Logical indexing the same as your Find function
I2 = I2(Array1 > a1 & Array1 < a2 & ...
        Array2 > b1 & Array2 < b2 & ...
        Array3 > c1 & Array3 < c3);

I2现在包含符合条件的索引。

你说你会使用这个

Array5 = Array4(I2)

如果这是唯一用途,您可以完全跳过I2创建,并使用相同的逻辑索引来创建它,就像这样

Array5 = Array4(Array1 > a1 & Array1 < a2 & ...
                Array2 > b1 & Array2 < b2 & ...
                Array3 > c1 & Array3 < c3);