文字列と数値が混ざっ​ており、列数が一定で​ないテキストファイル​から数値データのみを​読み込むにはどうすれ​ばよいですか?

11 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 5 月 9 日
回答済み: MathWorks Support Team 2017 年 5 月 9 日
文字列と数値が混ざっており、列数が一定でないテキストファイルから数値データのみを読み込むにはどうすればよいですか?
読み取りたいテキストファイル(data1.txt)は例えば以下のようなものです。
行によっては空白行が挿入されている箇所もあります。
-data log start-
ID = 1
0 1 2 3 4 5
1 2 3
2 4 6 8 10
ID = 2
0 1 2 3 4 5
1 6 8
2 5 6 7 8
-data log end-
 

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 5 月 9 日
fgetl関数を使用することで対応可能です。
読み取り結果を格納するのに十分なサイズの初期配列Cを用意し、fgetl関数で一行ずつデータを読み込みながら、先頭が数値データである行のときのみCに読み取り結果を格納します。
%数値配列の初期化
C = zeros(10,6);
fid = fopen('data1.txt');
k = 1;
tline = fgetl(fid);
while (~feof(fid))
if ~isempty(tline)
if ~isnan(str2double(tline(1)))
C(k,1:length(str2num(tline))) = str2num(tline);
k = k+1;
end
end
tline = fgetl(fid);
end
fclose(fid);
%結果表示
imagesc(C)
以上の方法で、文字列と数値が混ざっており、さらに列数がバラバラのテキストデータから数値データのみを読み込むことが可能です。

その他の回答 (0 件)

タグ

製品


リリース

R2011b

Community Treasure Hunt

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

Start Hunting!