我有一个函数,使用以下代码导入在txt文件中收集的数据:
FILE = fopen(textDataFileName);
FIC = textscan(FILE, '%s');
FICu = FIC{1,1}(:,:);
n = numel(FICu);
for i = 1:n
FICun = str2double(FICu{i,1});
FICa(i,1) = FICun;
end
导入数据后,我的函数会提取所有必要的数据,然后我还有其他功能可以为我做数据分析。我的问题是,整个函数由上面的for循环减慢了。最初for循环不是问题,因为数据集相对较小;但是,每天都会将新数据附加到文本文件中,因此for循环必须与越来越大的数据集竞争(在导入之前无法预测其大小)。有没有人有任何简单的方法来矢量化我的for循环并完成同样的事情?
快速说明一下,更改格式不会导致人们期望的行为。实际上,将形成更改为%f(对于浮点)或%d(对于十进制)会导致函数跳过文件中的大部分数据。
另一个更新:
我的代码现在如下:
FILE = fopen(textDataFileName);
FIC = textscan(FILE, '%s');
FICu = FIC{1,1}(:,:);
n = numel(FICu);
FICa = zeros(n,1);
FICa = str2double(FICu(:,1));
这减少了完成所需的时间。有什么建议? (另外,请注意更改文件格式的问题,它没有像人们期望的那样工作。