[問題] 關於讀檔速度 已回收

看板MATLAB作者 (......)時間14年前 (2011/05/18 00:26), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
我想寫一個讀檔進到矩陣裡 再對數據做處理的程式 檔案類型可能是mp3 avi doc...等等 不拘 我一開始是這樣寫: file_name = 'xxxx.mp3'; fid = fopen(file_name , 'r'); file = fread(fid); fclose(fid); 本來讀一些小檔案(約幾MB)都沒問題 不過後來發現一些比較大的檔案...像avi等等,會到幾百MB的那種,會出現"out of memory" 所以後來就打算分段讀,寫成: file_name = 'xxxx.mp3'; fid = fopen(file_name , 'r'); i = 1; while feof(fid)~=1 file(:,i) = fread(fid,1024); i = i+1 end fclose(fid); 結果出現了兩個問題 1.讀取時間變好長! 原本3MB的檔案只要一眨眼,結果現在變的超過一分鐘還沒好? 2.讀到檔案尾的時候會出現matrix dimention mismatch 第一個問題我是想說會不會是一次讀進來的數據太少,導致要一直換column的關係 至於第二個...我也不知道該怎麼處理 囧> 不知道有沒人知道什麼好辦法可以解決這兩個問題呢? 或是有更有效率的寫法...在此先謝過<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.39.108

05/18 02:33, , 1F
如果 file 是個數量會一直增長的資料結構,那就會變得很慢
05/18 02:33, 1F

05/18 02:35, , 2F
for 迴圈裏,size(file) 的值要一直不變,速度才會快
05/18 02:35, 2F

05/18 09:34, , 3F
不過我的程式必須一次用到全部的數據資料@@" 所以一定
05/18 09:34, 3F

05/18 09:35, , 4F
要把全部數據都存在矩陣裡...
05/18 09:35, 4F

05/18 13:06, , 5F
要先知道你到底有沒有"連續的"幾百MB的記憶體?
05/18 13:06, 5F
文章代碼(AID): #1Dqg6mWw (MATLAB)