当最终数组大小未知时,Matlab预分配数组

时间:2015-09-02 11:50:24

标签: matlab allocation

我正在运行一个matlab脚本,它根据变量输入提取数据并将它们保存在变量中 - 请参阅下面的代码:

folder = 'Raw/';
fileStart = 'DAT_MT_';
fileMiddle = '_M1_';
fileEnd = '.csv';
years = cellstr(years);

price = zeros(0,1);
date = zeros(0,1);
time = zeros(0,1);

for l = 1:length(years)
    string = strcat(folder,fileStart,currency,fileMiddle,years(l),fileEnd);
    string = char(string);

    T = readtable(string,'ReadVariableNames',false);
    U = T(:,[1,2,6]);

    p = table2array(U(:,3));
    d = table2array(U(:,1));
    t = table2array(U(:,2));
    price = vertcat(price,p);
    date = vertcat(date,d);
    time = vertcat(time,t);
end

代码工作正常并按预期提供restults,但由于预分配问题,它非常慢。通常我通过用zeros()初始化变量来解决这个问题。但是,据我所知,这只有在知道数组的最终大小时才有效。对于我的脚本,情况并非如此,因为输入是可变的,因此数组的最终大小是未知的。有没有办法在不知道数组的最终大小的情况下提高这种代码的性能?

非常感谢!

0 个答案:

没有答案