我有3个巨大的阵列:Array1
,Array2
和Array3
。所有尺寸相同,尺寸为7000000x1
。
我试图在Matlab中使用find
命令找到满足常见条件的数组的索引,我这样使用
I2 = find (Array1 > a1 & Array1 < a2 & ...
Array2 > b1 & Array2 < b2 & ...
Array3 > c1 & Array3 < c2 );
a,b和c都包含标量值。
I2
在for循环中(~7M迭代),此操作需要大量时间!有关改进这行代码的任何建议吗?
答案 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);