MATLAB Answers

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

1 view (last 30 days)
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

Accepted Answer

Hernia Baby
Hernia Baby on 5 Jul 2021
単に読み込む場合は以下のように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 Comment
Yukiya Yasukawa
Yukiya Yasukawa on 6 Jul 2021
ありがとうございました。手こずっていた所なので助かりました。
数値を読み込むのもうまくいきましたので、これで作業が進みそうです。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!