Re: [問題] txt讀檔如何只讀某幾行已回收
※ 引述《powerup (東刀輪一流)》之銘言:
: 請教一下版上的各位前輩:
: 小弟的資料格式是由許多重複的區塊組成,單元區塊的組成如下:
: =====================================
: .
: . (非資料列,列數不定)
: .
: .
: SSACC R 3601331
: 3601331 520.7 375.8 527.0 ...
: MSG 3601339 -4 TARGET_SHOW
: 3601339 521.0 353.5 528.0 ...
: 3601341 521.0 345.1 528.0 ...
: MSG 3601343 -9 TARGET_SHOW
: 3601353 519.4 302.7 526.0 ...
: .
: .
: . (以此類推,列數不定)
: .
: .
: .
: ESACC R 3601331 3601359 30
: .
: . (非資料列,列數不定)
: .
: .
: ======================================
: 小弟要取的是SSACC和ESACC這兩列內的資料
: 只有取前三行的數字,文字跳過,亦即只有取3601331 520.7 375.8此種數字而已
: (第四行之後的也不要)
: 目前的寫法是:
: index = fgetl(fid);
: while isempty(findstr(index,'SSACC'))
: index = fgetl(fid);
: end
: yes = 1;
: data = [];
: temp=[];
: while yes
: if strcmp(temp,'ESACC') % 如果讀到ESACC便跳出迴圈
: break
: elseif ischar(temp) %如果讀到字串便捨棄此列
: temp = fgetl(fid);
: end
: temp = fscanf(fid,'%f%f%f',3); %一列只讀三筆資料
: data = [data;temp];
: % 不會直接換列...
: end
: 但是fscanf的指令中,size只能設定總共要讀幾筆資料,並排列成一指定的矩陣格式
: 似乎不能跳著讀
: 所以我就用上述的寫法,打算一列一列讀,但是卻不知道該如何換列
: 請問是用fseek嗎?那參考點要怎麼設呢?
無責任亂寫
不確定會不會work
data = [];
while 1
strL = fgetl(fid);
if strL == -1
break; % eof? exit
end
if strcmp(strL(1:5),'SSACC')
strL = fgetl(fid); % read next line
matTmp = str2num(strL); % 暴力read
data = [data; matTmp(1:3)'];
end
if strcmp(strL(1:5),'ESACC')
break; % 看到esacc就exit
end
end
--
→
06/25 21:30,
06/25 21:30
→
06/25 21:30,
06/25 21:30
→
06/25 21:30,
06/25 21:30
→
06/25 21:30,
06/25 21:30
→
06/25 21:30,
06/25 21:30
→
06/25 21:30,
06/25 21:30
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.201.115
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 5 篇):