[討論] fread 讀取binary問題

看板MATLAB作者 (昆)時間11年前 (2013/05/23 02:32), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
最近從2010a換了2012a以後 在讀取binary發現了一個問題 我的資料前面117行是標頭(ASCII), 之後會有10個數字(ASCII)儲存影像的寬有幾條資料(長是固定的) 接著才是二進位的資料(資料格式16 bit正整數 前面4格是其他資訊這裡並不需要 所以讀12格後跳4格) 過去我處理的方式是 %開檔 fp = fopen(filename); %把標頭讀出來並另存 for i = 1:117 A{i,1}=fgetl(fp); end %讀取影像的寬 imagesize = fgets(fp,10); %讀取二進位資料 temp = fread(fp,[555 imagesize],'ubit12',4); ... .. . 之前執行都沒有問題, 但是換了2012a之後發現temp讀出來的東西是空的 做了一些嘗試以後發現若不用 fgetl 而直接用fread亂讀 temp是會有東西的 所以不確定是否使用了fgetl 再使用 fread 會出錯 還煩請版眾替我解惑 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.165.170 ※ 編輯: venwhah 來自: 140.121.165.170 (05/23 02:38) ※ 編輯: venwhah 來自: 140.121.165.170 (05/23 02:38)

05/23 10:56, , 1F
直接讀uint16吧,反正是影像,少前四個msb只影響亮度而已
05/23 10:56, 1F

05/23 10:58, , 2F
計算上不會有任何問題;最多顯示時*4或*8調整亮度就好.
05/23 10:58, 2F
文章代碼(AID): #1HdGyWKX (MATLAB)