[問題] 不定長度的大檔案讀取已回收

看板MATLAB作者 (mingray/nosql)時間15年前 (2009/04/30 22:08), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
==不詳述版== 我有一個檔案可能會到60MB以上 內容有三種型式 一種是標頭 一種是時間戳記 一種是跟在時間戳記後的觀測資料 現在我已完成找出標頭的部分 我的目標是用最快或是次快的速度 取得時間戳記 塞入陣列 現在遇到可能的瓶頸是 含有時間戳記的部分大小不能完全肯定 這樣我在塞入陣列的時候 就有可能遇到要一直配置空間導致程式速度過慢的問題 (ex: while ~eof(fid), data(end+1,:)=xxx;, end)<--會很慢 有沒有比較建議的做法? ===詳述版== 我有一個RINEX資料 要取得標頭後的所有時間戳記 形式以標準敘述式表示為: (( \d{2}){5} [ \d]\d\.\d+) \d ([ \d][\d])(.+) 時間戳記後跟著該時間的量測資料 舉個範例: 09 04 30 21 44 0.000000 6G 1G 2G 3G11G12G13 (data*6*2行) 09 04 30 21 44 10.000000 10G 1G 2G 3G11G12G13G21G22G23G31 (data*10*2行) 其中資料的前面為 年 月 日 時 分 秒 資料總數 資料編號*n 我要取出的資料只有 時間 與 資料總數 我之前的做法是把檔案全部往記憶體餵 然後用matlab提供的標準敘述式把資料找出來 速度還蠻快的 筆記型電腦三十秒內就處理完十三小時*3600秒/筆資料 但現在的問題是檔案大到60MB以後 MATLAB吃掉的記憶體也高達500MB 我每執行一次就要重開MATLAB 而之後我要處理超過86400筆資料 勢必會OUT OF MEMORY 這樣我要改成怎麼寫才能避免OUT OF MEMORY 然後執行起來又不會比以前慢很多? 目前嘗試使用textscan中 可是用起來感覺不對 所以想問問有沒有解法:Q -- 我管你的,嘿嘿! /+ \ ┌─╖ mingray / nosql 學校蚊子老鼠好多...... ‵ (OwO ) │成║ ‵ |+|\__ │大║ http://mingray.googlepages.com ( ) | ̄ ̄ ̄ ̄| | └╥╜ 作者為研究生,長期關注保健醫療資訊 ( v | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ v > | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.201.115

05/01 09:04, , 1F
你是在做gps的吼...XD
05/01 09:04, 1F

05/01 21:38, , 2F
超過一天的rinex檔案真的大的好可怕OwQ
05/01 21:38, 2F

05/01 21:38, , 3F
可是裡面又好多garbage...Orz
05/01 21:38, 3F

05/01 21:39, , 4F
文章內容有錯 是50秒
05/01 21:39, 4F

05/01 21:40, , 5F
我目前用逐行掃的寫法需要200秒 效能硬是慢Orz
05/01 21:40, 5F
文章代碼(AID): #19-R3mZp (MATLAB)