当DJI矩阵有21000行时,以下循环在八度音程中运行大约需要700秒,在matlab中运行需要22秒。我怎样才能提高效率呢?
for i=1:length(DJI) DJI2(i,1)=datenum(char(DJI(i,2)),'yyyy-mm-dd'); end
答案 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'));