2008-12-06 58 views
3

當DJI矩陣有21000行時,以下循環需要大約700秒才能以八度方式運行並需要22秒才能在matlab中運行。我怎樣才能提高這個效率?提高使用datenum函數的循環效率?

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

回答

2

您是否記得預先分配DJI2?

更重要的是,你根本不需要循環。 datenum在數組上運行。 試試這個:

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

+0

使用char()似乎不允許我在整個數組上調用datenum,您提供的代碼示例不起作用。 – Jared 2008-12-08 23:18:48

2

我用下面的代替循環,並得到至少一個數量級的速度增加。

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