不規則なフォーマットのデータの読み込み

17 ビュー (過去 30 日間)
Yukiya Yasukawa
Yukiya Yasukawa 2021 年 7 月 5 日
コメント済み: Yukiya Yasukawa 2021 年 7 月 6 日
16
1 25
-65.29 0.79900E-07 0.82233E-08
1 1 -67.8588 0.80457E-07 92.3761 89.9255 87.6239 90.0745
Tx-R-Rx
-0.5483143E-07 0.4834502E-07 0.1000000E+01
-0.1564544E-01 0.1202459E+02 0.1498956E+01
-0.3135639E-01 -0.5033190E-01 0.2000000E+01
2 2 -67.8594 0.80457E-07 92.1290 90.0261 87.5000 90.1250
Tx-R-R-Rx
-0.5483143E-07 0.4834502E-07 0.1000000E+01
-0.2623408E-01 0.1202459E+02 0.1525007E+01
-0.3501767E-01 0.7998557E+01 0.1700788E+01
-0.3135639E-01 -0.5033190E-01 0.2000000E+01
3 2 -67.8786 0.80664E-07 92.4897 359.8980 87.7500 359.6250
Tx-R-R-Rx
-0.5483143E-07 0.4834502E-07 0.1000000E+01
0.1152191E+02 -0.7541068E-01 0.1452706E+01
0.1206498E+02 -0.7185633E-01 0.1474044E+01
-0.3135639E-01 -0.5033190E-01 0.2000000E+01
4 1 -67.8794 0.80663E-07 92.3700 0.1194 87.6300 359.8806
Tx-R-Rx
-0.5483143E-07 0.4834502E-07 0.1000000E+01
0.1206498E+02 -0.2513332E-01 0.1499351E+01
-0.3135639E-01 -0.5033190E-01 0.2000000E+01
上記のようなフォーマットのデータをMatlabで読み込みたいです。(上記は一部で実際は2000行以上あります。)行列の列数が行によって異なっていたり、文字列が含まれているためどのように読み込めば良いか分かりません。inportdataを使った場合以下のように1列の配列として読み込まれてしまいます。
このようなデータを読み込むためにはどのような関数を使うのが適切でしょうか?
(ちなみに文字列部分はできれば読み込みたいのですが、絶対に必要ではありませんので無視するほうが適切であれば、それでもかまいません。)
>> path = importdata(myfilename)
path =
16.0000
1.0000
25.0000
-65.2900
0.0000
0.0000
1.0000
1.0000
-67.8588
0.0000
92.3761
89.9255
87.6239
90.0745

採用された回答

Hernia Baby
Hernia Baby 2021 年 7 月 5 日
単に読み込む場合は以下のようにcell配列に格納すればOKです。
ファイルの終端まで1行ずつ読み込む動作はこちらを参考にしてください。
clc,clear,close all;
fid = fopen('sample.txt');
k = 1;
while (~feof(fid))
tline = fgetl(fid);
a{k,:} = tline;
k = k + 1;
end
a
a = 25×1 cell array
{' 16' } {' 1 25' } {' -65.29 0.79900E-07 0.82233E-08' } {' 1 1 -67.8588 0.80457E-07 92.3761 89.9255 87.6239 90.0745'} {'Tx-R-Rx ' } {'-0.5483143E-07 0.4834502E-07 0.1000000E+01' } {'-0.1564544E-01 0.1202459E+02 0.1498956E+01' } {'-0.3135639E-01 -0.5033190E-01 0.2000000E+01' } {' 2 2 -67.8594 0.80457E-07 92.1290 90.0261 87.5000 90.1250'} {'Tx-R-R-Rx ' } {'-0.5483143E-07 0.4834502E-07 0.1000000E+01' } {'-0.2623408E-01 0.1202459E+02 0.1525007E+01' } {'-0.3501767E-01 0.7998557E+01 0.1700788E+01' } {'-0.3135639E-01 -0.5033190E-01 0.2000000E+01' } {' 3 2 -67.8786 0.80664E-07 92.4897 359.8980 87.7500 359.6250'} {'Tx-R-R-Rx ' } {'-0.5483143E-07 0.4834502E-07 0.1000000E+01' } {' 0.1152191E+02 -0.7541068E-01 0.1452706E+01' } {' 0.1206498E+02 -0.7185633E-01 0.1474044E+01' } {'-0.3135639E-01 -0.5033190E-01 0.2000000E+01' } {' 4 1 -67.8794 0.80663E-07 92.3700 0.1194 87.6300 359.8806'} {'Tx-R-Rx ' } {'-0.5483143E-07 0.4834502E-07 0.1000000E+01' } {' 0.1206498E+02 -0.2513332E-01 0.1499351E+01' } {'-0.3135639E-01 -0.5033190E-01 0.2000000E+01' }
数値だけ抜き出したい場合は、別途ご質問ください。
回答用意しております。
  1 件のコメント
Yukiya Yasukawa
Yukiya Yasukawa 2021 年 7 月 6 日
ありがとうございました。手こずっていた所なので助かりました。
数値を読み込むのもうまくいきましたので、これで作業が進みそうです。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeワークスペース変数と MAT ファイル についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!