0

次のコードを使用して、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 (10 進数の場合) に変更すると、関数はファイル内のほとんどのデータをスキップします。

別の更新:

私のコードは次のようになりました:

FILE = fopen(textDataFileName);
FIC = textscan(FILE, '%s');
FICu = FIC{1,1}(:,:);

n = numel(FICu);
FICa = zeros(n,1); 
FICa = str2double(FICu(:,1)); 

これにより、完了するまでにかかる時間が 2 秒短縮されました。助言がありますか?(また、ファイル形式の変更の問題に注意してください。期待どおりに機能しませんでした。

4

0 に答える 0