矢量化以下for循环

时间:2013-11-09 18:15:33

标签: matlab

我有一个函数,使用以下代码导入在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)); 

这减少了完成所需的时间。有什么建议? (另外,请注意更改文件格式的问题,它没有像人们期望的那样工作。

0 个答案:

没有答案