文字列と数値が混ざっており、列数が一定でないテキストファイルから数値データのみを読み込むにはどうすればよいですか?
11 views (last 30 days)
Show older comments
MathWorks Support Team
on 9 May 2017
Answered: MathWorks Support Team
on 9 May 2017
文字列と数値が混ざっており、列数が一定でないテキストファイルから数値データのみを読み込むにはどうすればよいですか?
読み取りたいテキストファイル(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-
Accepted Answer
MathWorks Support Team
on 9 May 2017
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 Comments
More Answers (0)
See Also
Categories
Find more on 低水準ファイル I/O in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!