二进制数据的读取
使用fread函数可从文件中读取二进制数据,它将每个字节看成整数,并将结果以矩阵形式返回。对于读取二进制文件,fread必须制定正确的数据精度。
fread的基本调用方法是:
A=fread(fid)
其中fid是一个整数型变量,是通过调用fopen函数获得的,表示要读取的文件标识符,输出变量A为矩阵,用于保存从文件中读取的数据。
例如文件的内容如下:
test it
用fread函数读取该文件,输入如下命令:
>> f=fopen('','r');
>> answer=fread(f)
answer =
116
101
115
116
32
105
116
输出变量的内容是文件数据的ASCII码值,若要验证读入的数据是否正确,通过下面的命令可以验证。
>> disp(char(ans1'))
test it
fread函数的第二个输入参数可以控制返回矩阵的大小,例如:
>> f=fopen('','r');
>> answer=fread(f,2)
answer =
116
101
也可以把返回矩阵定义为指定的矩阵格式,例如
>> f=fopen('','r');
>> an=fread(f,[2 3])
answer =
116 115 32
101 116 105
使用fread函数的第三个输入变量,可以控制fread将二进制数据转成MATLAB 矩阵用的精度,包括一次读取的位数(Number of Bits)和这些位数所代表的数据类型。
常用的精确度类型有下列几种,如表2-6所示。
表2-6 常见的精确度类型
数 据 类 型 | 说 明 |
char | 带符号的字符(通常是8h16) |
uchar | 无符号的字符(通常是8bits) |
short | 短整数(通常是16bits) |
long | 长整数(通常是16bits) |
fread和fwrite的区别float | 单精度浮点数(通常是32bits) |
double | 双精度浮点数(通常是64bis) |
2.4.2 二进制数据的写入
使用fwrite函数可将矩阵按所指定的二进制格式写入文件,并返回成功写入文件的大小。函数的调用方式如下:
count=fwrite(fid,A,precision)
其中,count用来返回写入文件数据的大小,f参数同样是通过fopen函数获得的整数型变量,表示文件标识符,A表示要写入的数据矩阵,第三个参数precision同二进制读取函数的参数一样,表示数据的写入格式。
在下例中fwrite产生一个大小为100字节的二进制文件,它包含了一个5×5阶魔方矩阵,共25个元素,每个元素占用4个字节。
f=fopen('magic5.bin', 'w');
fwrite(f,magic(5), 'int32');
fclose(f)
二进制文件在不同的计算机架构上可能存储方式不同,所以二进制文件存在兼容性问题,而文本文件则不存在这种兼容性问题。不同的存储方式导致在不同架构上保存的二进制文件在另外的平台上无法读取,这主要是因为多字节数据类型在计算机硬件上的存储顺序不同。在MATLAB中,无论计算机上的数据存储顺序是哪一种,都可以读写二进制文件,但要正确地调用fopen函数打开文件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论