Aumentare l'efficienza del loop che utilizza la funzione datenum?
Domanda
L'esecuzione del ciclo seguente richiede circa 700 secondi per l'esecuzione in ottava e 22 secondi per l'esecuzione in matlab quando la matrice DJI ha 21000 righe. Come posso aumentare l'efficienza di questo?
for i=1:length(DJI) DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); end
Soluzione
Ti sei ricordato di preallocare DJI2?
Ancora più importante, non è necessario il loop. datenum
funziona su array.
Prova questo:
DJI2=datenum(char(DJI(:,2)),'yyyy-mm-dd');
Altri suggerimenti
Ho sostituito il loop con il seguente e ho ottenuto almeno un ordine di aumento di magnitudo nella velocità.
DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow