0

test.TXT ファイル (タブ区切り) を MATLAB に読み込む必要があります。

TXT ファイルの形式は次のとおりです。

Datum Time Data1 Data2 Data3 Data4 Data5
06/28/2012 09:27,3 1,931764 -0,008698 4,151306 33,865424 -44,923096
06/28/2012 09:27,3 1,931764 -0,003662 4,154358 33,865424 -44,831543
06/28/2012 09:27,4 1,928712 -0,001526 4,168701 33,866102 -45,472412
.....................................................

その後、これらのデータをプロットする必要があります (たとえばtimevs. data1; timevs. data2..)

test.txt ファイルを開いて読み取る最も簡単な方法は何ですか。これにより、データをプロットできます (すべてのデータをワークスペースに挿入します..)。データをインポートしようとしましたが、MATLAB はデータを 1 つの列としてインポートします。:/

ありがとう


編集

最初の投稿に間違った形式の時刻をコピーしていることに気付きました:S

Datum Time Data1 Data2 Data3 Data4 Data5
06/28/2012 17:09:27,3 1,931764 -0,008698 4,151306 33,865424 -44,923096
06/28/2012 17:09:27,3 1,931764 -0,003662 4,154358 33,865424 -44,831543
06/28/2012 17:09:27,4 1,928712 -0,001526 4,168701 33,866102 -45,472412
.....................................................

17:09:27,4 -> 17(時)、09(分)、27(秒)、4(ミリ秒)

ここに、 と の大きな問題が,あります。.

4

1 に答える 1

2

この質問で以前に回答したように、 textscanまたはfscanfのいずれかを使用する必要があります

よく見てみると、あなたの質問には興味深いニュアンスがいくつかあります。私が行った解決策は、すべてを文字列として読み取ることにより、柱状構造を保持することでした。これにより、コンマがピリオドに置き換えられ、日付文字列が datenum に処理され、最後に文字列として格納された数値が変換される間、すべての順序が維持されます。

fid = fopen('test.txt','rt');
header = textscan(fid,'%s %s %s %s %s %s %s',1); 
data = textscan(fid,'%s %s %s %s %s %s %s');
data = cellfun(@(x) strrep(x,',','.'),data,'UniformOutput',false);
clean_data(:,1) = arrayfun(@(x) datenum([data{1}{x} ' ' data{2}{x}]), 1:length(data{1}) )';
clean_data(:,2:6) = cell2mat(cellfun(@str2num , [data{3:end}],'UniformOutput',false));
fclose(fid);

そこにはいくつかの厄介な遷移があります。ただし、ファイルが法外に長くない限り、一般的なアプローチはしっかりしているはずです。結果は次のとおりです。

>> datestr(clean_data(:,1))
ans =
28-Jun-2012 09:27:18
28-Jun-2012 09:27:18
28-Jun-2012 09:27:24

>> clean_data(:,2:end)
ans =
1.9318   -0.0087    4.1513   33.8654  -44.9231
1.9318   -0.0037    4.1544   33.8654  -44.8315
1.9287   -0.0015    4.1687   33.8661  -45.4724

最後に、元の目標であった日付に対してプロットします。

>> plot(clean_data(:,1),clean_data(:,2))
>> datetick    
于 2012-06-30T13:03:38.517 に答える