В Matlab у нас есть такой сценарий:Looping над вектором эффективно в MATLAB
v =[1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 .... N N N N];
где элементы в V всегда находятся в возрастающем порядке от 1 до N, и мы знаем, что значение N. Мы хотим сосчитать число «1 '„2“... в ст
Конечно, мы можем использовать цикл как следующие:.
for i = 1 : N
% method A
tic
ind = find(v == i)
---> do sth with ind
t1 = toc;
% method B
tic
ind = v(v == i)
---> do sth with ind
t2 = toc;
% method C
tic
ind = ismember(v , i)
---> do sth with ind
t3 = toc;
end
время является необходимым для каждого из этой методы примерно равно $ t1 = 0,02 с $, $ t2 = 0,02 с $ и $ t3 = 0,03 с. В моей реальной работе N огромна, и весь цикл занимает от 2 до 3 часов!
Возможно, у вас есть идеи, что время для этого процесса может быть увеличено? Любая идея ценится.
Я согласен с вашим заказом на исполнение. +1. – rayryeng
Но ОП попросил увеличить время! ;) – marsei
@macduf Тогда OP будет 'fliplr' мой предложенный заказ;) – Divakar