提高使用datenum函数的循环效率?

时间:2008-12-06 21:58:21

标签: matlab octave

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

for i=1:length(DJI)
DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd');
end

2 个答案:

答案 0 :(得分:2)

你还记得预先分配DJI2吗?

更重要的是,你根本不需要循环。 datenum在数组上运行。 试试这个:

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

答案 1 :(得分:2)

我用以下内容替换了循环,并且速度至少提高了一个数量级。

DJI2(:,1) = reshape(datenum(strvcat(DJI(:,2)(:)), length(DJI(:,2)),'yyyy-mm-dd'));