Matlab中fread函数用法
目录
语法
说明
示例
读取整个文件的uint8数据
读取包含双精度数据的整个文件
读取文本文件
读取文件中的选定行或列
读取二进制编码的十进制值的位数
fread函数读取二进制文件中的数据。
语法
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)[A,count] = fread(___)
说明
- A = fread(fileID) 将打开的二进制文件中的数据读取到列向量A中,并将文件指针定位在文件结尾标记处。该二进制文件由文件标识符fileID指示。使用fopen可打开文件并获取fileID值。读取文件后,请调用fclose(fileID) 来关闭文件。
- A = fread(fileID,sizeA) 将文件数据读取到维度为sizeA的数组A中,并将文件指针定位到最后读取的值之后。fread按列顺序填充 A。
- A = fread(fileID,sizeA, precision ) 根据precision描述的格式和大小解释文件中的值。sizeA参数为可选参数。
- A = fread(fileID,sizeA, precision ,skip) 在读取文件中的每个值之后将跳过 skip指定的字节或位数。sizeA参数为可选参数。
- A = fread(fileID,sizeA, precision ,skip,machinefmt) 另外指定在文件中读取字节或位时的顺序。sizeA和skip参数是可选的。
- [A,count] = fread(___) 还将返回 fread 读取到 A 中的字符数。可以将此语法与前面语法中的任何输入参数结合使用。
示例
读取整个文件的uint8数据
将一个九元素向量写入到示例文件nine.bin 中。
fileID = fopen('nine.bin','w');
fwrite(fileID,[1:9]);
fclose(fileID);
将文件中的所有数据读取到double类的向量中。默认情况下,fread 一次读取文件中的1个字节,将每个字节解释为一个8位无符号整数 (uint8),并返回一个double数组。
fileID = fopen('nine.bin');
A = fread(fileID)
A = 9×1123456789
fread返回一个列向量,文件中的每个字节对应一个元素。查看 A 的相关信息。
whos AName Size Bytes Class AttributesA 9x1 72 double
关闭文件。
fclose(fileID);
读取包含双精度数据的整个文件
创建一个名为 doubledata.bin 并且包含九个双精度值的文件。
fileID = fopen('doubledata.bin','w');
fwrite(fileID,magic(3),'double');
fclose(fileID);
打开文件 doubledata.bin,并将文件中的数据读取到一个 3×3 数组 A。指定源数据为 double 类。
fileID = fopen('doubledata.bin');
A = fread(fileID,[3 3],'double')
A = 3×38 1 63 5 74 9 2
关闭文件。
fclose(fileID);
读取文本文件
读取文件 fread.m 的内容。转置输出数组 A 以便其为行向量。
fileID = fopen('fread.m');
A = fread(fileID,'*char')';
fclose(fileID);
fread 返回字符数组 A。
读取文件中的选定行或列
创建一个名为 nine.bin 并且包含1 - 9中的值的文件。以uint16值形式写入数据。
fileID = fopen('nine.bin','w');
fwrite(fileID,[1:9],'uint16');
fclose(fileID);
将前六个值读取到一个 3×2 数组中。指定源数据为 uint16 类。
fileID = fopen('nine.bin');
A = fread(fileID,[3,2],'uint16')
A = 3×21 42 53 6
fread返回使用文件nine.bin中的前六个值逐列填充的一个数组。
返回到文件的开头。
frewind(fileID)
一次读取两个值,并在读取下一个值之前跳过一个值。使用 precision 值 '2*uint16' 指定此格式。因为数据为 uint16 类,所以一个值由 2 个字节表示。因此,将 skip 参数指定为 2。
precision = '2*uint16';
skip = 2;
B = fread(fileID,[2,3],precision,skip)
B = 2×31 4 72 5 8
fread 返回使用 nine.bin 中的值逐列填充的一个 2×3 数组。
关闭文件。
fclose(fileID);
读取二进制编码的十进制值的位数
创建一个包含二进制编码小数 (BCD) 值的文件。
str = ['AB'; 'CD'; 'EF'; 'FA'];fileID = fopen('bcd.bin','w');
fwrite(fileID,hex2dec(str),'ubit8');
fclose(fileID);
一次读取 1 个字节。
fileID = fopen('bcd.bin');
onebyte = fread(fileID,4,'*ubit8');
显示 BCD 值。
disp(dec2hex(onebyte))
AB
CD
EF
FA
使用frewind返回到文件的开头。如果在 little-endian 系统上一次读取 4 位数,则结果将以错误顺序显示。
frewind(fileID)err = fread(fileID,8,'*ubit4');
disp(dec2hex(err))
B
A
D
C
F
E
A
F
使用 frewind 返回到文件的开头。与之前一样一次读取数据的 4 位,但指定 big-endian 排序以显示正确的结果。
frewind(fileID)correct = fread(fileID,8,'*ubit4','ieee-be');
disp(dec2hex(correct))
A
B
C
D
E
F
F
A
关闭文件。
fclose(fileID);
已打开二进制文件的文件标识符,指定为整数。使用fread读取文件之前,必须使用fopen打开文件并获取fileID。
sizeA 输入的格式
|
输出数组 A 的维度。
|
---|---|
Inf | 列向量,其中的每个元素包含文件中的一个值。 |
n | 具有 n 个元素的列向量。 |
[m,n] | m×n 矩阵,按列顺序填充。n可以为 Inf,但m不能为该值。 |
要读取的值的类和大小(以位为单位),以下列形式之一指定为字符向量或字符串标量。(可选)输入可指定输出矩阵 A
的类。
precision 输入的格式
|
说明 |
---|---|
source |
输入值属于source指定的类。输出矩阵A为类 double。 示例:'int16' |
source=>output |
输入值属于 source 指定的类。输出矩阵 A 的类由 output 指定。 示例:'int8=>char' |
*source |
输入值和输出矩阵 A 属于 source 指定的类。对于 bitn 或 ubitn 精度,输出具有可包含输入的最小类。 例如:'*ubit18' 这等同于 'ubit18=>uint32' |
N*source 或 |
在跳过 skip 参数指定的字节数之前读取 N 值。 |
下表显示了 source 和 output 的可能值。
值类型 | 精度 | 位(字节) |
---|---|---|
无符号整数 |
'uint' |
32 (4) |
'uint8' |
8 (1) |
|
'uint16' |
16 (2) |
|
'uint32' |
32 (4) |
|
'uint64' |
64 (8) |
|
'uchar' |
8 (1) |
|
'unsigned char' |
8 (1) |
|
'ushort' |
16 (2) |
|
'ulong' |
32 (4) |
|
'ubitn' |
1 ≤ n ≤ 64 |
|
有符号整数 |
'int' |
32 (4) |
'int8' |
8 (1) |
|
'int16' |
16 (2) |
|
'int32' |
32 (4) |
|
'int64' |
64 (8) |
|
'integer*1' |
8 (1) |
|
'integer*2' |
16 (2) |
|
'integer*4' |
32 (4) |
|
'integer*8' |
64 (8) |
|
'schar' |
8 (1) |
|
'signed char' |
8 (1) |
|
'short' |
16 (2) |
|
'long' |
32 (4) |
|
'bitn' |
1 ≤ n ≤ 64 |
|
浮点数 |
'single' |
32 (4) |
'double' |
64 (8) |
|
'float' |
32 (4) |
|
'float32' |
32 (4) |
|
'float64' |
64 (8) |
|
'real*4' |
32 (4) |
|
'real*8' |
64 (8) |
|
字符 |
'char*1' |
8 (1) |
'char' |
依赖于与文件关联的编码方案。使用fopen设置编码。 |
对于source的大多数值,如果 fread 在读取完整值之前达到文件的末尾,则不会返回最终值的结果。但是,如果source是bitn或ubitn,则fread将返回最后一个值的部分结果。 读取每个值之后要跳过的字节数,指定为标量。如果将precision指定为bitn或ubitn,请以位为单位指定skip。
使用skip参数从固定长度记录的非连续字段中读取数据。读取文件中的字节的顺序,指定为字符向量或字符串标量。将 machinefmt 指定为下表中列出的值之一。对于bitn和ubitn精度,machinefmt指定字节中位的读取顺序,而字节的读取顺序仍与系统字节顺序相同。
'n' 或 'native' |
系统字节排序方式(默认) |
'b' 或 'ieee-be' |
Big-endian 排序 |
'l' 或 'ieee-le' |
Little-endian 排序 |
's' 或 'ieee-be.l64' |
Big-endian 排序,64 位长数据类型 |
'a' 或 'ieee-le.l64' |
Little-endian 排序,64 位长数据类型 |
默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。
文件数据,以列向量形式返回。如果指定sizeA参数,则A是指定大小的矩阵。A中的数据为类double,除非在precision参数中指定不同的类。读取的字符数,以标量值形式返回。
注:matlab读取.dat文件
file='name.dat';
fid=fopen(file,'rb'); %打开数据文件
data=fread(fid,[x,y],'double'); %读取文件数据
fclose(fid); %关闭文件
Matlab中fread函数用法相关推荐
- length命令怎么用Matlab,matlab中length函数用法
matlab中的length表示什么?应该如何使用? length:数组长度(即行数或列数中的较大值): 使用方法: n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值 ...
- matlab sort descend,详解Matlab中 sort 函数用法
搜索热词 (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,3; ...
- matlab中频域信号IFFT,MATLAB中ifft函数用法、性质、特性-以及与fft的组合应用全面深入解析(含程序)...
MATLAB中ifft函数用法.性质.特性,以及与fft的组合应用全面深入解析(含程序) 前言 在我之前的<MATLAB中fft函数用法.性质.特性.缺陷全面深入解析(含程序)>中,我已经 ...
- Matlab中 intlinprog函数用法简介
Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...
- matlab stem 属性,matlab中stem函数用法_常见问题解析
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- matlab里randn是什么,matlab中randn函数用法
matlab中randn函数用法 MATLAB 中的randn函数 matlab函数 randn:产生正态分布的随机数或矩阵的函数 randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态 ...
- sort函数降序排列matlab,详解Matlab中 sort 函数用法
(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...
- matlab中imresize()函数用法
matlab中imresize()函数的功能是改变图像的大小. 其用法有多种: 1.B = imresize(A,m) 将图片A放大m倍 2.B = imresize(A,m,method) 将图 ...
- zeros(0 5)函数matlab,matlab中zeros函数用法
matlab中zeros函数是用于返回一个double类零矩阵,其用法是:1.在命令行窗口中输入"B=zeros(5)",按回车键可生成一个"5*5"的零矩阵: ...
最新文章
- linux root权限_深入了解 Linux 权限
- mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)
- C# WPF Application 下的文件操作
- .NET开发者必备的工具箱
- [css] 使用css如何设置背景虚化?
- 五个温度带的分界线_亚热带,暖温带,到底是些什么带?
- Got error 28 from storage engine的错误怎么办
- NFC 与 RFID
- jquery隐式迭代
- java 到异常_java编程中遇到的异常以及异常的一些处理
- hbuilder怎么设置网页的大小_怎么免费将图片转成PDF?这个方法超简单
- 汉字拼音首字母检索筛选数据
- 开源计算机辅助翻译(CAT)软件OmegaT快速上手指南
- python开发桌面时钟_python+PyQT实现系统桌面时钟
- Linux gpio 接口
- php服务器能运行java吗_将PHP与Java服务器接口
- java图书馆自习室找座占座位系统
- CVE-2022-26923域提权漏洞
- 来自GitHub的系列渗透测试工具
- 【Linux系列-2】iostat命令详解
热门文章
- Matlab实现光栅实验
- 面试题:谈谈你对Mysql数据库优化的见解
- 温度循环试验标准gjb150-温度循环试验检测机构报告
- fmea第五版pfmea表格_第五版PFMEA模板(含附属评分准则编写指南全套EXCEL表)
- Java数据结构-约瑟夫问题(Joseph环)
- 【MFC开发(15)】进度条控件Progress Control
- linux下hex文件到bin文件的格式转化,hex转换成bin文件小工具(HEX2BIN.EXE)下载_hex转换成bin文件小工具(HEX2BIN.EXE)官方下载-太平洋下载中心...
- C语言常用库函数(含详细用法))
- 免费的matlab程序学习下载网站总结
- 浪潮之巅阅读笔记(第四版)_(第一章 帝国的余晖)