Matlab中fread函數用法
“fread”以二進制形式,從文件讀出數據。
語法1:[a,count]=fread(fid,size,precision)
語法2:[a,count]=fread(fid,size,precision,skip)
size: 不指定 :到尾返回讀。
N : 讀出N個數據,構成列向量。
inf : 讀出fid指向的打開的文件的全部數據。
[M,N] : 讀出N個數據,構成列向量,填入M*N矩陣
precision(精度)
precision(精度)規定了以浮點數、整型數、字符讀出時位。matlab 的precision(精度)的表達式與c語言、fortran語言、是一致的。不規定precision(精度),則字符默認為: ucher、則數值默認為:雙精度 。
以下precision(精度)將保證讀出具有一致的體積。
MATLAB C or Fortran Descriphon(精度)
'char' 'char*l' 8 位,字符型
'uchar' 'unsigned char' 8 位
'schar' 'signed char' 8 位,字符型
'int8' 'integer*1' 8 位,整型數
'intl6' 'integer*2' 16 位,整型數.
'int32' 'integer*4' 32 位,整型數.
'int64' 'integer*8' 64 位,整型數
'uint8' 'integer*l' 8 位
'uintl6' 'integer*2' 16 位
'uint32' 'integer*4' 32 位
'uint64' 'integer*8' 64 位
'float32' 'real*4' 浮點數, 32 位
'float64' 'real*8' 浮點數, 32 位
以下precision(精度)將不保證讀出具有一致的體積。
MATLAB C or Fortran Descriphon(精度)
'short' 'short' 16 位,整型數
'int' 'int' 32 位,整型數
'long' 'long' 32 (64) 位,整型數
'uShort' 'Unsigned short' 16 位
'uint' 'Unsigned int' 32 位
'ulong' 'unsigned long' 32 (64) 位
'float' 'float' 浮點數, 32 位
'double' 'double' 浮點數, 64 位
以下precision(精度)規定讀出指定的體積n。
'bitN' N位,整型數 1<=N<=64
'ubitN' N位, 1<=N<=64
fread 使用注意
值得注意的是,fread是一列一列地填滿A的。例如:
假設一個不換行的文件里含有:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ,
想要輸入matlab時,令其這樣排:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
則fread應該寫成:A=fread(fid,[5,3]),得到:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
然后再轉置,就能得到正確結果了。
如果錯誤地寫成A=fread(fid,[3,5]),則得到
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
顯然即使轉置也得不到正確結果。
另外,對於指定了precision的指令,如:A=fread(fid,[5,3],'short=>double'),
程序就會在文件中,以兩個字節為單位提取原文件后變為8字節來填滿A(因為short是2字節,double是8個字節)。
precision的缺省格式(即不顯示時)為:‘uchar=>double’,所以程序默認是以字節為單位提取原文件數據后變為8字節來填滿A的。
如A是一個字符串
那么直接fread讀取A
>>fread(A)
那么讀取到的是A中每個字母的ASCii碼值!
再如B是一個字符串
那么fread(B) 將會是把每個字母單獨做一行輸出,而fread(B)' 轉置則會把字母作為一列輸出一直遇到回車鍵才換行!
實際案例:
B ='Who is this? \n is me!'
>>fread(B,'unit8=>char')
輸出
W
h
o
[]%空格
i
s
[]
t
h
i
s
?
\
n
[]
i
s
[]
m
e
!
如果是:
>>fread(B,'unit8=>char')'
Who is this ? %遇到回車符換行
is me!
看到了吧,就是轉置時 遇到了回車符那它就自動換行了,如果是沒有轉置, 則是一個字符一個字符讀取那么分開讀取\ 和n 則沒有轉義功能了,再說單字母成列也不需要“回車”了。
此外可參考博文:http://blog.csdn.net/fall221/article/details/7299712