从二进制文件读取数据
写一个九元素向量到一个样本文件,nine.bin
.
fileID = fopen(“nine.bin”,' w ');写入文件(文件标识,[1:9]);文件关闭(文件标识);
将文件中的所有数据读入class的vector中双
.默认情况下,从文件中读
每次读取文件1个字节,将每个字节解释为8位无符号整数(uint8
),并返回a双
数组中。
fileID = fopen(“nine.bin”);A = fread(fileID)
一个=9×11 2 3 4 5 6 7 8 9
从文件中读
返回列向量,文件中的每个字节对应一个元素。
查看相关信息一个
.
谁一个
名称大小字节类属性A 9x1 72 double
关闭文件。
文件关闭(文件标识);
创建一个名为doubledata.bin
,包含9个双精度值。
fileID = fopen(“doubledata.bin”,' w ');写入文件(文件标识,魔法(3),“双”);文件关闭(文件标识);
打开文件,doubledata.bin
,并将文件中的数据读入一个3 × 3的数组,一个
.指定源数据是类双
.
fileID = fopen(“doubledata.bin”);A = fread(fileID,[3 3],“双”)
一个=3×38 1 6 3 5 7 4 9 2
关闭文件。
文件关闭(文件标识);
阅读文件的内容,fread.m
.对输出数组进行转置,一个
所以它是一个行向量。
fileID = fopen(“fread.m”);A = fread(fileID,“*字符”)”;文件关闭(文件标识);
从文件中读
返回字符数组,一个
.
创建一个名为nine.bin
,取值为1 ~ 9。将数据写成uint16
值。
fileID = fopen(“nine.bin”,' w ');写入文件(文件标识,[1:9],“uint16”);文件关闭(文件标识);
将前6个值读入3 × 2数组。指定源数据是类uint16
.
fileID = fopen(“nine.bin”);A = fread(fileID,[3,2],“uint16”)
一个=3×21 4 2 5 3 6
从文件中读
返回一个由文件中的前六个值按列填充的数组,nine.bin
.
返回到文件的开头。
frewind(文件标识)
一次读取两个值,并在读取下一个值之前跳过一个值。方法指定此格式精度
值,“2 * uint16”
.因为数据是类uint16
,一个值用2个字节表示。因此,请指定跳过
参数为2
.
精度=“2 * uint16”;Skip = 2;B = fread(fileID,[2,3],precision,skip)
B =2×31 4 7 2 5 8
从文件中读
返回一个2 × 3的数组,按列填充来自的值nine.bin
.
关闭文件。
文件关闭(文件标识);
创建一个包含二进制编码的十进制(BCD)值的文件。
STR = [“AB”;“CD”;“英孚”;“足”];fileID = fopen(“bcd.bin”,' w ');写入文件(文件标识,hex2dec (str),“ubit8”);文件关闭(文件标识);
每次读取一个字节。
fileID = fopen(“bcd.bin”);onbyte = fread(fileID,4,)‘* ubit8‘);
显示BCD值。
disp (dec2hex (onebyte))
Ab CD ef fa
返回到文件的开头frewind
.如果你在一个小端系统上一次读取4位,你的结果会以错误的顺序出现。
frewind(fileID) err = fread(fileID,8,)‘* ubit4‘);disp (dec2hex (err))
B a d c f e a f
返回到文件的开头frewind
.和前面一样,每次读取4位数据,但是指定一个大端排序以显示正确的结果。
frewind(fileID) right = fread(fileID,8,)‘* ubit4‘,“ieee-be”);disp (dec2hex(正确)
A b c d e f f A
关闭文件。
文件关闭(文件标识);
文件标识
- - - - - -文件标识符打开二进制文件的文件标识符,指定为整数。在读取文件之前从文件中读
,你必须使用打开外部文件
打开文件,获取文件标识
.
数据类型:双
sizeA
- - - - - -输出阵列尺寸正
(默认)|整数|二元行向量输出数组的尺寸,一个
,指定为正
,一个整数,或一个双元素行向量。
的形式sizeA 输入 |
输出数组的尺寸,一个 |
---|---|
正 |
列向量,其中每个元素在文件中包含一个值。 |
|
的列向量n 元素。 |
|
米 ——- - - - - -n 矩阵,按列顺序填充。n 可以正 ,但米 不能。 |
精度
- - - - - -类和要读取的值的大小“uint8 = >双”
(默认)|字符向量或字符串标量类和大小,以要读取的值的位为单位,指定为字符向量或以下形式之一的字符串标量。输入可选地指定输出矩阵的类,一个
.
的形式精度 输入 |
描述 |
---|---|
源 |
所指定的类的输入值源 .输出矩阵一个 是类双 .例子: “int16” |
源 = >输出 |
所指定的类的输入值源 .输出矩阵的类,一个 ,由输出 .例子: “int8 = >字符” |
* |
输入值和输出矩阵,一个 ,都属于源 .为位 或ubit 精度,输出具有可以包含输入的最小类。例子: ‘* ubit18‘ 这相当于 ' ubit18 = > uint32” |
|
读 |
的可能值源
而且输出
.
值类型 | 精度 | 位(字节) |
---|---|---|
整数,无符号 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
整数,签署了 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
浮点数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
字符 |
|
|
|
取决于与文件关联的编码方案。设置编码 |
的大多数值源
,如果从文件中读
在读取完整值之前到达文件末尾,则不返回最终值的结果。然而,如果源
是位
或n
ubit
,然后n
从文件中读
返回最终值的部分结果。
为了保护南
而且正
MATLAB中的值®,读写类的数据双
或单
.
数据类型:字符
|字符串
跳过
- - - - - -要跳过的字节数读取每个值后要跳过的字节数,指定为标量。如果指定精度
的位
或n
ubit
,指定n
跳过
在碎片。
使用跳过
参数从定长记录中的不连续字段读取数据。
machinefmt
- - - - - -读取字节的顺序“n”
(默认)|“b”
|“l”
|“年代”
|“一个”
|……读取文件中字节的顺序,指定为字符向量或字符串标量。指定machinefmt
作为下表中的值之一。为位
而且n
ubit
精度,n
machinefmt
指定字节内读取位的顺序,但读取字节的顺序保持系统字节顺序。
|
您的系统字节排序(默认) |
|
高位优先排序 |
|
低位优先排序 |
|
大端排序,64位长数据类型 |
|
小端排序,64位长数据类型 |
默认情况下,当前支持的所有平台都对新文件使用小端排序金宝app。现有的二进制文件可以使用大端排序或小端排序。
数据类型:字符
|字符串
一个
—文件数据文件数据,作为列向量返回。如果您指定sizeA
参数,然后一个
是指定大小的矩阵。数据一个
是类双
类中指定不同的类精度
论点。
数
-读取的字符数读取的字符数,作为标量值返回。
使用注意事项和限制:
输入参数精度
必须是一个常数。
的源
而且输出
类,精度
指定不能有以下值:“长”
,“ulong”
,“无符号长”
,“一点
,或n
'“ubit
.n
'
您不能使用machinefmt
输入。
如果源
或输出
那精度
指定是C类型,例如,int
,那么该类型的目标和生产尺寸必须:
匹配。
直接映射到MATLAB类型。
的源
类型精度
指定必须直接映射到目标硬件上的C类型。
如果从文件中读
调用读取整个文件,然后所有数据必须装入可用于代码生成的最大数组中。
如果sizeA
非常数或包含非有限元素,则需要动态内存分配。
的代码生成器从文件中读
函数处理字符
值源
或输出
作为签署者8
位整数。使用以下值0
而且127
只有。
生成的代码不会报告文件读取错误。因此,您必须在您的MATLAB代码中编写自己的文件读取错误处理。在错误处理代码中,请考虑检查读取的字节数是否与请求的字节数匹配。例如:
...N = 100;[vals, numRead] = fread(fid, N,)*双的);如果numRead ~= N读取的元素比预期的少结束...
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。