MATLAB fread

原文: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’即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
---------------------
 

 

 

你可能感兴趣的:(MATLAB fread)