【发布时间】:2008-12-06 21:58:21
【问题描述】:
当 DJI 矩阵有 21000 行时,以下循环在 octave 中运行大约需要 700 秒,在 matlab 中运行大约需要 22 秒。如何提高效率?
对于 i=1:长度(DJI) DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); 结尾【问题讨论】:
当 DJI 矩阵有 21000 行时,以下循环在 octave 中运行大约需要 700 秒,在 matlab 中运行大约需要 22 秒。如何提高效率?
对于 i=1:长度(DJI) DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); 结尾【问题讨论】:
你记得预分配 DJI2 吗?
更重要的是,您根本不需要循环。 datenum 对数组进行操作。
试试这个:
【讨论】:
我用以下代码替换了循环,速度至少提高了一个数量级。
DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));
【讨论】: