3

当 DJI 矩阵有 21000 行时,以下循环在 octave 中运行大约需要 700 秒,在 matlab 中运行大约需要 22 秒。我怎样才能提高这个效率?

对于 i=1:长度(DJI)
DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd');
结尾

4

2 回答 2

2

你记得预分配 DJI2 吗?

更重要的是,您根本不需要循环。 datenum对数组进行操作。试试这个:

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

于 2008-12-08T19:53:57.750 回答
2

我用以下代码替换了循环,速度至少提高了一个数量级。

DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));
于 2008-12-08T23:17:18.137 回答