Re: [問題] txt讀檔如何只讀某幾行已回收

看板MATLAB作者 (mingray/nosql)時間15年前 (2009/08/24 23:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《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,
希望對您有幫助 http://ptt.cc 廣告好多放著爛
06/25 21:30

06/25 21:30,
希望對您有幫助 http://ptt.cc 反正網友會上班
06/25 21:30

06/25 21:30,
希望對您有幫助 http://ptt.cc 人力波特不用錢
06/25 21:30

06/25 21:30,
希望對您有幫助 http://ptt.cc 還可以賺發文篇
06/25 21:30

06/25 21:30,
希望對您有幫助 http://ptt.cc
06/25 21:30

06/25 21:30,
希望對您有幫助 http://ptt.cc ptt.cc
06/25 21:30
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.201.115
文章代碼(AID): #1Aagk5H0 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Aagk5H0 (MATLAB)