私はテキストを持っています(このような100K行になる可能性があります)
time,10 a b,20 c d
(時間 = HH:mm:ss.ffff ミリ秒単位)
2つの配列にインポートしたい
time,a,b
time,c,d
最短の方法は?将来の使用のためにスクリプト/コードも保存する必要があります...
私はテキストを持っています(このような100K行になる可能性があります)
time,10 a b,20 c d
(時間 = HH:mm:ss.ffff ミリ秒単位)
2つの配列にインポートしたい
time,a,b
time,c,d
最短の方法は?将来の使用のためにスクリプト/コードも保存する必要があります...
MATLAB には、いくつかのテキスト入力オプションがあります。多くの場合、正規表現ベースのオプション (textscan など) は効果的ですが、手動で行を順番に読み取ることでより適切に処理できる固定形式があるように思えます。この方法のパフォーマンスは、textscan や import よりも安定していることがわかりました。a、b、c、d が固定幅でない場合は、何か別のことを行う必要があります。その場合は、インポート ウィザードを使用して入力をセットアップし、インポート コードを保存して、必要に応じて変更し、自動化します。
array1 = NaN(<numberoflines>,6);
array2 = NaN(<numberoflines>,6);
fname = 'path_to_some_file';
fid = fopen(fname);
stop = 0;
jj = 1;
while ~stop
cline = fgetl(fid);
if ischar(cline)
HH = str2double(cline(1:2));
MM = str2double(cline(...));
...
array1(jj,:) = [HH MM SS MS a b];
array2(jj,:) = ...;
else
disp('End of file')
stop = 1;
end
end
fclose(fid)
を使ってみてくださいregexp
。matlab で文字列を解析するための非常に強力なツールです。