2008-12-06 4 views
3

Следующий цикл занимает около 700 секунд для работы в октаве и 22 секунды для запуска в матрице, когда матрица DJI имеет 21000 строк. Как я могу повысить эффективность этого?Повышение эффективности цикла, использующего функцию данных?

 
for i=1:length(DJI) 
DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); 
end 

ответ

2

Вы помните, как предварительно распределить DJI2?

Что еще более важно, вам не нужна петля вообще. datenum работает на массивах. Попробуйте следующее:

 
DJI2=datenum(char(DJI(:,2)),'yyyy-mm-dd'); 

+0

Использование char(), похоже, не позволяет мне вызывать данные по всему массиву, приведенный вами пример кода не работает. – Jared 2008-12-08 23:18:48

2

Я заменил петлю следующим и получил хотя бы один порядок увеличения скорости.

DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));