0

私はテキストを持っています(このような100K行になる可能性があります)

time,10 a b,20 c d

(時間 = HH:mm:ss.ffff ミリ秒単位)

2つの配列にインポートしたい

time,a,b
time,c,d

最短の方法は?将来の使用のためにスクリプト/コードも保存する必要があります...

4

2 に答える 2

1

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)
于 2013-02-24T17:47:02.567 に答える
0

を使ってみてくださいregexp。matlab で文字列を解析するための非常に強力なツールです。

于 2013-02-24T17:30:23.840 に答える