Matlab中fread函數的高級使用方法及其幫助文檔中容易引起歧義的地方


參考資料: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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM