原文:https://blog.csdn.net/meizan3603/article/details/67632131;http://blog.sina.com.cn/s/blog_69666a220101iwv7.html
fread函数常见用法:
1、A=fread(fileID,sizeA,precision,skip,machinefmt)
2、A=fread(fileID)
3、fread(fileID,sizeA)
4、A=fread(fileID,sizeA,precision)
5、A=fread(fileID,sizeA,precision,skip)
6、A=fread(fileID,sizeA,precision,skip)
直接讲第一种参数最多时候的用法,其他可以类推。
fread函数主要用法读取二进制文件。
下面是常用参数的含义:
1、fileID 文件标识
打开的文件标识。比如fid=fopen('file.dat'); fid就是fileID,即文件标识
2、sizeA 输出数组的维度
有3种参数,Inf、n、[m,n]
Inf 代表输出数据是列向量,文件中每一个元素对应一个值
n 代表有n个元素的列向量
[m,n] 代表按列向量排列的m行n列的矩阵,n可以取Inf,但m不可以
3、precision 需要读取数据的类型和大小,默认'uint8=>double'
常见有uint,uint8、uint16等数据格式,需要根据源数据来确定
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
4、skip 代表跳过多少字节,默认为0
5、machinefmt 待读取数据字节的排列方式,默认为'n'
需要根据源数据格式来确定,有'b'、'l'、's'、'a'等格式
'n'就是系统字节的排列顺序,即‘native’
'b'就是'ieee-be',即'Big-endian ordering',即低位字节排放在内存的高地址端,高位字节排放在内存的低地址端
'l'就是‘ieee-le’,即‘Little-endian ordering’即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
---------------------