To read a .dat file by replacing 'nil' s with zeros

조회 수: 1 (최근 30일)
aneps
aneps 2016년 4월 19일
댓글: Walter Roberson 2016년 4월 21일
I have a .dat file with 3 columns :
56 1221.9522403147 4709.4286506579
57 1296.7593276229 2382.7334294788
58 1298.014307685 5378.3218155863
59 1672.5745510151 3586.6821218019
60 1293.7368062958 2311.6447578082
61 1066.5874471792 3652.8767627687
62 nil 7015.2811482462
63 1295.6502693748 12997.366157104
64 1473.1366368752 3878.5975654487
65 1893.552884693 4782.6543016909
66 1601.2373040587 5157.4325835724
This is a part of my data. it has some 'nil' s appearing somewhere. How can I read the data into a 3 x n matrix by replacing those 'nil' s with zeros?

채택된 답변

Walter Roberson
Walter Roberson 2016년 4월 19일
fid = fopen('YourFile.dat', 'rt');
yourdata = cell2mat( textscan(fid, '%f%f%f', 'Delimiter', '\t', 'TreatAsEmpty', 'nil', 'EmptyValue', 0, 'CollectOutput', 1) );
fclose(fid);
  댓글 수: 8
aneps
aneps 2016년 4월 21일
Yes, it worked.. thank you... I have one more question, if I have several data like Result_1.da, Result_2.dat.... Result_n.dat, how can I loop it to read all as yourdata1, yourdata2, .... yourdatan?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2016년 4월 19일
fid=fopen('file.dat')
v=textscan(fid,'%s')
fclose(fid)
w=reshape(v{:},3,[])'
w=strrep(w,'nil','0')
out=str2double(w)
  댓글 수: 3
Azzi Abdelmalek
Azzi Abdelmalek 2016년 4월 19일
Use
n=5
v=textscan(fid,'%s','headerlines',n)
aneps
aneps 2016년 4월 21일
did not work:( .. getting error message "Error using textscan Invalid file identifier. Use fopen to generate a valid file identifier."

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by