Matlab中函数fopen、fprintf、fread的用法(针对C/Matlab下precision进行详细介绍)

函数fopen、fprintf、fread的用法

  • fopen(filename,permission)函数
  • fprintf('permission', name)函数
  • fread()函数

在这里插入图片描述
fopen(filename,permission)函数

fopen(filename,permission)是个将数据按指定格式读入到matlab中或获取关于打开文件的信息的函数。参数定义:

  • filename:将要被打开文件的本地路径;
  • permission:指定对打开文件的访问权限类型;

permission是打开方式,默认的打开方式是只读模式。如果以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数,由以下字符串确定:

  • r 读出
  • w 写入(文件若不存在,自动创建)
  • a 后续写入(文件若不存在,自动创建)
  • r+ 读出和写入(文件应已存在)
  • w+ 重新刷新写入,(文件若不存在,自动创建)
  • a+ 后续写入(文件若不存在,自动创建))
  • w 重新写入,但不自动刷新
  • a 后续写入,但不自动刷新
1
2
% 读入文本文件
frr = fopen(secrettext, 'r');       % r 读出

fprintf(‘permission’, name)函数

fprintf()是个将数据按指定格式写入到文本文件中的函数。参数定义:
permission用来指定数据输出时采用的格式:

  • %d 整数
  • %e 实数:科学计算法形式
  • %f 实数:小数形式
  • %g 由系统自动选取上述两种格式之一
  • %s 输出字符串

name是要输出数据的数据名

1
fprintf('m=%d\n',M);    % 输出整数型M数据

fread()函数

fread():从二进制文件中读取数据。
基本语法:
语法1:[a,count]=fread(fid,size,precision)
语法2:[a,count]=fread(fid,size,precision,skip)
参数说明:

  • fid:文件标识符;
  • size:输出数组的维数;
    • N : 读出N个数据,构成列向量。
    • inf : 读出fid指向的打开的文件的全部数据。
    • [M,N] : 读出N个数据,构成列向量,填入M*N矩阵
  • precision:指定要读取数据的类型;
  • skip:指定需要调过的字节数,默认为0;

matlab 的precision(精度)的表达式与c语言、fortran语言是一致的。不规定precision(精度),则字符默认为: uchar,数值默认为:双精度 。

以下precision(精度)将保证读出具有一致的体积

Matlab C/Fortran precision
‘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/Fortran precision
‘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

在这里插入图片描述