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

È stato utile?

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
scroll top