У меня есть 3 огромных массива: Array1
, Array2
и Array3
. Все они имеют одинаковые размеры, а их размер - 7000000x1
.FInding индексы нескольких массивов, удовлетворяющих условию в matlab
Я пытаюсь найти индексы массивов, которые удовлетворяют общее условие, используя find
команду в Matlab, я использовал как этот
I2 = find (Array1 > a1 & Array1 < a2 & ...
Array2 > b1 & Array2 < b2 & ...
Array3 > c1 & Array3 < c2);
а, Ь и с содержат скалярные значения.
I2
находится внутри цикла (~ 7M итераций), и эта операция занимает огромное количество времени! Любые предложения по улучшению этой строки кода?
Это более чем вероятно, так быстро, как это будет. Есть ли какая-то особая причина, по которой вам нужно «найти», а не просто получить логический массив? – Suever
Я думал, что найти это простой способ сделать это. Не могли бы вы объяснить, что имеется в виду, выбирая логический массив? – Mechanician
Хорошо, что вы делаете позже с 'I2'? Используете ли вы его, чтобы извлекать ценности из чего-то другого? Если это так, вы можете опустить 'find' и просто использовать логический массив, возвращаемый остальной частью инструкции, для индексации для вас – Suever