次のコードを使用して、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 秒短縮されました。助言がありますか?(また、ファイル形式の変更の問題に注意してください。期待どおりに機能しませんでした。