參考資料:http://cn.mathworks.com/help/matlab/ref/fread.html
注意:參考資料針對的Matlab版本號R2015a,我使用的是R2013b。
Matlab幫助文件中給出了這幾種用法
A = fread(fileID)A = fread(fileID,sizeA)A = fread(fileID,sizeA,precision)A = fread(fileID,sizeA,precision,skip)A = fread(fileID,sizeA,precision,skip,machinefmt)
1. 其中precision規定的是“把二進制數作為什么格式的編碼來識別”,如'uint8'為八位無符號型。
2. 最后這一種用法是讀取一個precision字節,跳過n(由skip規定)個字節,再讀取一個precision字節。但是這里要注意,“跳過n個字節”這里的字節是指的系統默認的8位字節,而不是由precision規定的字節。2015版的幫助文檔寫的很詳細,因為有大量的例子,2013版的就很容易引起歧義。所以還是及時更新新版Matlab,至少看新版Matlab的網頁幫助,他們會優化文檔中含義模糊的地方.
3. 當你想一次讀幾個precision字節的時候(一個block),precision可以是‘N*unint8’的形式,N為每個block的precision字節數。
PS. 當文件開頭需要先跳過若干數據再讀取時,先用一個A = fread(fileID,sizeA,precision)移動讀取指針即可,后面緊跟讀取有用數據的fread()。
3. sizeA規定讀取多少個precision,一般是一個正整數,可省略,R2015a幫助文件中提到sizeA可以為[a,b]形式,即把變量直接讀入a行b列的矩陣,逐列寫入變量,R2013b的幫助文件中沒有提到,但同樣可以使用。(后來我發現幫助文檔里寫了。。)
4. machinefmt規定二進制文件是大端(Big Endian)還是小端(Little Endian),參數是'ieee-be'和‘ieee-le’。大小端的解釋詳見http://blog.csdn.net/ce123_zhouwei/article/details/6971544。
