2017-03-09 17 views
0

これは私の最初の質問はここにstackoverflowです。私はMatlabで.txtファイルを読むのに問題があります。 .txtは、本当に乱雑ですが、以下のような構造を持っています。Matlab:多くの区切り文字で.txtファイルを読む方法

"ALMEMO";"BEREICH:";"L420";"DIGI";"DIGI";"DIGI";"DIGI";;;;;;;"DIGI";"DIGI";"DIGI";"DIGI";;;;;;;"DIGI";"DIGI";"DIGI";"DIGI";;;;;;;"DIGI";"DIGI";"DIGI";"DIGI";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"CoCo";"CoCo";"CoCo";"CoCo";"CuCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";;;;;;;;;;;"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo";"CoCo" 
"5690-2";"KOMMENTAR:";"";"T,t  ";"T,t  ";"Temperatur";"T,t  ";;;;;;;"RH,Uw  ";"RH,Uw  ";"Feuchte ";"RH,Uw  ";;;;;;;"DT,td  ";"DT,td  ";"Taupunkt ";"DT,td  ";;;;;;;"MH,r g/kg ";"MH,r g/kg ";"Mischung ";"MH,r g/kg ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";"";"";"";"";"";"";"";"";"";;;;;;;;;;;"";"";"";"";"";"";"";"";"";"" 
"SD3.10";"GW-MAX:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
"ALMEMO.001";"GW-MIN:";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
"DATUM:";"ZEIT:";"M00: ms";"M01: øC";"M02: øC";"M03: øC";"M04: øC";;;;;;;"M11: %H";"M12: %H";"M13: %H";"M14: %H";;;;;;;"M21: øC";"M22: øC";"M23: øC";"M24: øC";;;;;;;"M31: gk";"M32: gk";"M33: gk";"M34: gk";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"M70: øC";"M71: øC";"M72: øC";"M73: øC";"M74: øC";"M75: øC";"M76: øC";"M77: øC";"M78: øC";"M79: øC";;;;;;;;;;;"M90: øC";"M91: øC";"M92: øC";"M93: øC";"M94: øC";"M95: øC";"M96: øC";"M97: øC";"M98: øC";"M99: øC" 
07.03.21;11:29:24;0,;22,91;23,15;23,68;22,75;;;;;;;38,3;74,1;70,;38,8;;;;;;;8,;18,3;17,8;8,1;;;;;;;6,6;13,2;12,8;6,6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;-;-;-;-;-;-;-;-;-;;;;;;;;;;;-;-;-;-;-;-;-;-;-;- 
;11:30:24;0,;22,9;23,14;23,69;22,82;;;;;;;38,4;72,6;71,9;38,5;;;;;;;8,;18,;18,3;8,;;;;;;;6,6;12,9;13,2;6,6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;-;-;-;-;-;-;-;-;-;;;;;;;;;;;-;-;-;-;-;-;-;-;-;- 
;11:31:24;0,;22,94;23,14;23,68;22,88;;;;;;;38,3;75,4;71,5;38,5;;;;;;;8,;18,6;18,2;8,1;;;;;;;6,6;13,4;13,1;6,6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;-;-;-;-;-;-;-;-;-;;;;;;;;;;;-;-;-;-;-;-;-;-;-;- 
;11:32:24;0,;23,;23,13;23,68;22,95;;;;;;;38,2;73,;72,3;38,5;;;;;;;8,;18,1;18,4;8,1;;;;;;;6,6;13,;13,3;6,7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;-;-;-;-;-;-;-;-;-;;;;;;;;;;;-;-;-;-;-;-;-;-;-;- 

6行のヘッダーの後に、実際のデータが続きます。これらのデータは、 ';'で区切られています。浮動小数点数にはドットの代わりにコマを使用します。私が必要とするデータは、行全体ではなく、最初の9つの要素(日付、時間、9の浮動小数点数)で表されます。それは動作しません、明らかに

[date1, hour1, V0, Temp1, Temp2, Temp3, Temp4, RH1, RH2, RH3, RH4] = textread('file.txt', '%c %c %f %f %f %f %f %c* %c* %c* %c* %c* %c* %f %f %f %f', 'headerlines', 7, 'delimiter', ';'); 

私は、ファイルを読むために書いたコードは、少し単純に、他のコードを見て、次のようです。要約すると、以下の質問が残っています:

  • 多くの区切り文字を1つとして扱うにはどうすればよいですか? (私のコードでやろうとしたとおりに無視する)
  • ヘッダーの後の最初の行にのみ表示される日付をコード全体に表示するにはどうすればよいですか? (私は後で出力行列の最初の列をaサイクルで埋めることができると思います)
  • 9番目の浮動小数点数の後ろにあるすべてを無視して、テキストファイルの行をカットするにはどうすればよいですか? - 昏睡区切りの浮動小数点数はどのように読むことができますか? (ノートパッド「置換」機能でドットに変換しようとしましたが、これは私の場合は有効な解決策ですが、まだ問題は解決しません)

お返事をいただき、 、 Giuseppe

+0

MATLABにそのようなファイルを解析するのに十分な柔軟性があるかどうかはわかりません。もしあなたがあらかじめファイルを編集するために他の言語(PERLのような)を使用した方が良いでしょう。 – UJIN

+2

'textscan'のヘルプを読むべきです。特に 'MultipleDelimitersAsOne'と' HeaderLines'オプション – Suever

+0

あなたがファイル全体を文字列として読むなら、regexprep(strFile、 '+;'、 ';')を使ってこの文字列を後処理して、 1つで次に、 '、'を 'に置き換えることができます。' regexprepを使用して、最終的なデータ表現にステップバイステップで行く –

答えて

0

textscanのビルトイン引数を利用して、ヘッダーの行を正しく処理し、複数の区切り文字を解析することができます。その後、ドット置換のカンマをstrrepで処理します。最後に、文字列のセル配列をstr2doubleで数値の配列に変換することができます。あなたのタスクが、テキスト処理を達成する

fid = fopen('foo.txt'); 
C = textscan(fid, repmat('%s',1,9), 'Headerlines', 6, 'Delimiter', ';', 'MultipleDelimitersAsOne', 1); 
col1 = str2double(strrep(C{1}, ',', '.')); 

非常に回り道はまさに、MATLABの強力なポイントではありません。

関連する問題