我正在运行一个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()
初始化变量来解决这个问题。但是,据我所知,这只有在知道数组的最终大小时才有效。对于我的脚本,情况并非如此,因为输入是可变的,因此数组的最终大小是未知的。有没有办法在不知道数组的最终大小的情况下提高这种代码的性能?
非常感谢!