读取二进制文件的数据
写一个九元素矢量到样本文件,nine.bin
。
文件标识= fopen (“nine.bin”,'W');写入文件(文件标识,[1:9]);FCLOSE(FILEID);
将文件中的所有数据读入类向量双
。默认情况下,从文件中读
每次读取一个文件1字节,解释每个字节为8位无符号整数(uint8
),并返回a双
阵列。
文件标识= fopen (“nine.bin”);A =的fread(FILEID)
A =9×11 2 3 4 5 6 7 8 9
从文件中读
返回一个列向量,具有用于在文件中的每个字节的一个元素。
查看信息一种
。
谁是一种
名称大小字节类属性的9X1 72双
关闭文件。
FCLOSE(FILEID);
创建一个名为doubledata.bin
含有9双精度值。
文件标识= fopen (“doubledata.bin”,'W');写入文件(文件标识,魔法(3),'双');FCLOSE(FILEID);
打开文件,doubledata.bin
,并将文件中的数据读入一个3×3的数组中,一种
。指定源数据是类双
。
文件标识= fopen (“doubledata.bin”);A =的fread(FILEID,[3 3],'双')
A =3×38 1 6 3 5 7 4 9 2
关闭文件。
FCLOSE(FILEID);
读取文件内容,fread.m
。移调输出数组,一种
所以,这是一个行向量。
文件标识= fopen ('fread.m');一个=从文件中读(文件标识,“*字符”)”;FCLOSE(FILEID);
从文件中读
返回字符阵列,一种
。
创建一个名为nine.bin
,包含从1到9的值。将数据写成uint16
值。
文件标识= fopen (“nine.bin”,'W');的fwrite(FILEID,[1:9],“uint16”);FCLOSE(FILEID);
读前六个值成3×2阵列。指定源数据是类uint16
。
文件标识= fopen (“nine.bin”);A =的fread(FILEID,[3,2],“uint16”)
A =3×21 4 2 5 3 6
从文件中读
返回填充列方向与从该文件的前六个值的阵列,nine.bin
。
返回到文件的开头。
frewind(文件标识)
一次读取两个值,并读取下一个值之前跳过一个值。使用指定格式精确
值,'2 * UINT16'
。由于数据类uint16
,一个值由2个字节表示。因此,指定跳跃
参数作为2
。
精度='2 * UINT16';跳过= 2;B =的fread(FILEID,[2,3],精度,跳过)
B =2×31 4 7 2 5 8
从文件中读
返回一个2×3阵列填充逐列与来自值nine.bin
。
关闭文件。
FCLOSE(FILEID);
用二进制编码的十进制(BCD)值创建一个文件。
海峡= [“AB”;“CD”;“英孚”;'F A'];文件标识= fopen (“bcd.bin”,'W');的fwrite(FILEID,HEX2DEC(STR),'ubit8');FCLOSE(FILEID);
一次读取1个字节。
文件标识= fopen (“bcd.bin”);onebyte =的fread(FILEID,4,‘* ubit8‘);
显示BCD值。
disp (dec2hex (onebyte))
AB CD EF英足总
使用返回到文件的开头frewind
。如果你在一个小端系统上的时间读4位,搜索结果将显示在错误的顺序。
frewind(fileID) err = fread(fileID,8,‘* ubit4‘);DISP(DEC2HEX(ERR))
B A D C F E A F
使用返回到文件的开头frewind
。读取数据的4位在时间和以前一样,但指定大端排序,以显示正确的结果。
frewind(FILEID)正确=的fread(FILEID,8,‘* ubit4‘,'IEEE-是');DISP(DEC2HEX(正确))
A B C dêF F甲
关闭文件。
FCLOSE(FILEID);
FILEID
-文件标识符打开的二进制文件的文件标识符,指定为整数。以前读文件,从文件中读
,您必须使用打开外部文件
以打开该文件并获取FILEID
。
数据类型:双
sizeA
-输出数组的维天道酬勤
(默认)|整数|双元素行向量输出阵列的尺寸,一种
,指定为天道酬勤
,一个整数,或一个双元素行向量。
形式的sizeA 输入 |
输出阵列的尺寸,一种 |
---|---|
天道酬勤 |
列向量,每个元素在文件中包含一个值。 |
|
与列向量ñ 元素。 |
|
米 -通过-ñ 基质,填充在列的顺序。ñ 可天道酬勤 ,但米 不能。 |
精确
-类和要读取的值的大小“uint8 = >双”
(默认)|字符向量或标量串类和大小(以要读取的值的位为单位),在下列形式之一中指定为字符向量或字符串标量。可选地,输入指定输出矩阵的类,一种
。
形式的精确 输入 |
描述 |
---|---|
源 |
输入值是由指定的类的源 。输出矩阵一种 是一流的双 。例子: 'INT16' |
源 =>产量 |
输入值是由指定的类的源 。类输出矩阵的,一种 ,由产量 。例子: 'INT8 =>符' |
* |
输入值和输出矩阵,一种 ,都属于所指定的类源 。为位 或UBIT 精度,输出具有可包含输入最小的类。例子: ‘* ubit18‘ 这相当于 'ubit18 => UINT32' |
|
读 |
下表显示了可能的值源
和产量
。
值类型 | 精确 | 位(字节) |
---|---|---|
整数,无符号 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
整数,签署了 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
浮点数字 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
人物 |
|
|
|
取决于与文件关联的编码方案。设置编码 |
对于大多数值源
如果从文件中读
在读取完整的值之前到达文件的末尾,它不会返回最终值的结果。然而,如果源
是位
或ñ
UBIT
, 然后ñ
从文件中读
返回的最终值的局部结果。
保留为NaN
和天道酬勤
MATLAB中的值®,读写类数据双
或单
。
数据类型:烧焦
|字符串
跳跃
-字节数跳过的字节数读取每个值,指定为一个标量之后跳过。如果指定了精确
的位
或ñ
UBIT
,指定ñ
跳跃
在碎片。
使用跳跃
参数读取来自于固定长度的记录不连续的字段中的数据。
machinefmt
-为了读取字节'N'
(默认)|“b”
|'L'
|'S'
|“一个”
|……对于读取顺序字节的文件中,指定为字符向量或字符串标量。指定machinefmt
作为下表中的值之一。为位
和ñ
UBIT
精度,ñ
machinefmt
指定在字节内读取位的顺序,但读取字节的顺序仍然是系统字节的顺序。
|
您的系统字节顺序(默认) |
|
大端排序 |
|
小端排序 |
|
大端排序,64位长数据类型 |
|
小端排序,64位长的数据类型 |
默认情况下,当前支持的所有平台都对新文件使用litt万博1manbetxle-endian排序。现有的二进制文件可以使用big-endian或little-endian排序。
数据类型:烧焦
|字符串
一种
- 文件数据文件数据,返回的列向量。如果您指定的sizeA
参数,那么一种
是指定大小的矩阵。数据一种
是一流的双
类中指定的另一个类精确
论点。
计数
-读取的字符数字符数读,返回一个标量值。
使用说明及限制:
输入参数精确
必须是一个常量。
该源
和产量
类,精确
指定不能有这些值:“长”
,'ULONG'
,“无符号长”
,“位
,或ñ
““ubit
。ñ
“
你不能使用machinefmt
输入。
如果源
或产量
那精确
指定是C类型,例如,INT
,则该类型必须与目标及生产规模:
比赛。
直接映射到一个MATLAB型。
该源
类型精确
指定必须直接映射到目标硬件上的C类型。
如果从文件中读
调用读取整个文件,那么所有的数据必须符合可用的代码生成最大阵列英寸
如果sizeA
如果不是常量或包含非有限元素,则需要动态内存分配。
代码生成的从文件中读
功能对待烧焦
对于价值源
或产量
作为签署8
位整数。使用值之间0
和127
只要。
所生成的代码不报告文件读取错误。因此,你必须编写自己的文件的读错误处理您的MATLAB代码。在您的错误处理代码,考虑检查的字节数读匹配您请求的字节数。例如:
…N = 100;[vals, numRead] = fread(fid, N,*双的);如果numRead〜= N读取的元素比预期的少%结束…
您单击对应于该MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行它。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。