زيادة كفاءة حلقة يستخدم datenum وظيفة؟
سؤال
وحلقة التالية يستغرق حوالي 700 ثانية لتشغيل في اوكتاف و 22 ثانية لتشغيل في MATLAB عندما المصفوفة DJI ديها 21000 الصفوف. كيف يمكنني زيادة كفاءة هذا؟
for i=1:length(DJI) DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); end
المحلول
هل تذكر أن preallocate DJI2؟
والأهم من ذلك، لا تحتاج حلقة على الإطلاق. datenum
تعمل على المصفوفات.
جرب هذا:
DJI2=datenum(char(DJI(:,2)),'yyyy-mm-dd');
نصائح أخرى
وأنا محل حلقة بما يلي وحصلت على الأقل على أمر واحد من زيادة حجم في السرعة.
DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));
لا تنتمي إلى StackOverflow