Matlab中二进制数据的读取2Word格式.docx

上传人:b****5 文档编号:16134674 上传时间:2022-11-20 格式:DOCX 页数:11 大小:21.98KB
下载 相关 举报
Matlab中二进制数据的读取2Word格式.docx_第1页
第1页 / 共11页
Matlab中二进制数据的读取2Word格式.docx_第2页
第2页 / 共11页
Matlab中二进制数据的读取2Word格式.docx_第3页
第3页 / 共11页
Matlab中二进制数据的读取2Word格式.docx_第4页
第4页 / 共11页
Matlab中二进制数据的读取2Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Matlab中二进制数据的读取2Word格式.docx

《Matlab中二进制数据的读取2Word格式.docx》由会员分享,可在线阅读,更多相关《Matlab中二进制数据的读取2Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

Matlab中二进制数据的读取2Word格式.docx

读取MATLAB下的MAT数据格式的数据

aviread

.avi

读取AVI格式的音频视频数据

cdfread

.cdf

读取CDF格式的数据

hdf

.hdf

读取HDF格式的数据

imread

.bmp 

.cur 

.gif 

.hdf 

.ico

.jpg 

.pbm 

.pgm 

.png 

.pnm 

.ppm 

.pcx 

.tif 

.xwd 

.ras

读取各种格式的图形数据

wavread

.wav

读取Windows系统的声音文件

xlsread

.xls

读取Excel电子表格数据

2.3.2 

二进制数据的存写

要以一种标准二进制格式来存写二进制数据,可以使用MATLAB提供的高端函数,函数的选择取决于要存写数据的类型,这些函数如表2-5所示。

表2-5 

导出二进制数据函数

save

存写MATLAB下的MAT数据格式的数据

avifile

存写AVI格式的音频视频数据

cdfwrite

.cdf

存写CDF格式的数据

存写HDF格式的数据

imwrite

存写各种格式的图形数据

wavwrite

存写Windows系统的声音文件

xlswrite

存写Excel电子表格数据

在MATLAB中可以将一系列的图像保存为电影,这样使用电影播放函数就可以进行回放,保存方法可以同保存其他MATLAB工作空间变量一样,通过采用MAT文件格式保存。

但是若要浏览该电影,必须在MATLAB环境下。

在以某种格式存写一系列的MATLAB图像时,不需要在MATLBA环境下进行预览,通常采用的格式为AVI格式。

AVI是一种文件格式,在PC机上的Windows系统或UNIX操作系统下可以进行动画或视频的播放。

若要以AVI格式来存写MATLAB图像,步骤如下:

(1)用avifile函数建立一个AVI文件。

(2)用addframe函数来捕捉图像并保存到AVI文件中。

(3)使用close函数关闭AVI文件。

注意:

若要将一个已经存在的MATLAB电影文件转换为AVI文件,需使用函数movie2avi。

函数原型为:

movie2avi(mov,filename)

movie2avi(mov,filename,param,value,param,value…)

2.4 

使用文件I/O函数

前面介绍的都是MATLAB中的一些高级函数,除此之外MATLAB还包含了一组低端的文件I/O函数,如前面介绍的所有文件的打开和关闭函数:

fopen函数和fclose函数。

这些函数是建立在ANSI标准C库中的I/O函数。

若用户对C语言熟悉的话,那么也肯定熟悉这些函数。

比如,MATLAB文件I/O函数使用和C语言同样的编程模式等。

要读写这些数据,需进行以下几步:

(1)使用fopen函数打开文件。

fopen函数将会返回一个文件标志,通过它,就可以使用其他所有的低端文件I/O函数。

(2)对文件进行操作,如:

读写二进制数据、格式化读写文本数据等。

(3)使用fclose函数来关闭文件。

2.4.1 

使用fread函数可从文件中读取二进制数据,它将每个字节看成整数,并将结果以矩阵形式返回。

对于读取二进制文件,fread必须制定正确的数据精度。

fread的基本调用方法是:

A=fread(fid)

其中fid是一个整数型变量,是通过调用fopen函数获得的,表示要读取的文件标识符,输出变量A为矩阵,用于保存从文件中读取的数据。

例如文件test.txt的内容如下:

testit

用fread函数读取该文件,输入如下命令:

>

f=fopen('

test.txt'

'

r'

);

answer=fread(f)

answer=

 

116

101

115

32

105

输出变量的内容是文件数据的ASCII码值,若要验证读入的数据是否正确,通过下面的命令可以验证。

disp(char(ans1'

))

fread函数的第二个输入参数可以控制返回矩阵的大小,例如:

answer=fread(f,2)

也可以把返回矩阵定义为指定的矩阵格式,例如

an=fread(f,[23])

116 

115 

101 

使用fread函数的第三个输入变量,可以控制fread将二进制数据转成MATLAB矩阵用的精度,包括一次读取的位数(NumberofBits)和这些位数所代表的数据类型。

常用的精确度类型有下列几种,如表2-6所示。

表2-6 

常见的精确度类型

数据类型

说 

char

带符号的字符(通常是8h16) 

uchar

无符号的字符(通常是8bits)

short

短整数(通常是16bits)

long

长整数(通常是16bits)

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函数打开文件。

2.4.3 

格式化读取ASCII码数据

fscanf函数与C语言中的fscanf在结构、含义和使用上都很相似,即能够从一个有格式的文件中读入数据,并将它赋给一个或多个变量。

两个函数都采用同一组格式指定符来控制输入数据的格式,fscanf的格式指定符由字符%开头,常用格式如表2-7所示。

表2-7 

常见的用于输入的格式转换符

格式转换符

意 

%c

读取字符型变量,也可以指定多个字符,'

%3c'

%s

读取字符串变量

%d

读取整数型变量

%f

读取浮点数

%g

读取双精度浮点数

例如,我们仍然读取my_test.dat文件中的数据,其数据内容是:

4.5646767e-001 

8.2140716e-001 

6.1543235e-001

1.8503643e-002 

4.4470336e-001 

7.9193704e-001

通过下面这段代码,将该文件中的数据读取到列向量T中。

my_test.dat'

T=fscanf(f,'

%g'

fclose(f)

也可以通过以下代码段把文件数据读取到一个3×

2矩阵A中。

A=fscanf(f,'

,[32]);

执行后结果如下,这时候A矩阵恰好是文件中数据矩阵的转置。

A

A=

0.4565 

0.0185

0.8214 

0.4447

0.6154 

0.7919

2.4.4 

格式化写入文本数据

fprintf将会把数据转换为字符串,并将它们输出到屏幕或文件中。

一个格式控制字符串包含转换指定符和可选的文本字符,通过它们来指定输出格式。

转换指定符用于控制阵列元素的输出。

当fprint函数做标准输出,也就是运行结果显示在屏幕上的时候,它的功能和disp函数相类似,区别仅在于fprint可以输出特定格式的文本数据。

比如,创建一个2×

2的魔方矩阵,然后打开一文件,写入数据。

clearall;

x=magic

(2);

fid=fopen('

exam4.txt'

fprintf(fid,'

%4.2f 

%8.4f\n'

x);

fclose(fid);

执行这段程序段之后,我们可以检验一下执行结果:

x

x=

3

2

typeexam4.txt

1.00 

4.0000

3.00 

2.0000

可以看出,fprintf函数在打印显示矩阵数据时,数据转换规则是可以按列方式循环作用于矩阵的各个元素的,这个例子中显示出来的结果就好像原矩阵的转置,而且分别按数据转换规则显示。

2.4.5 

控制文件位置指针

每一次打开文件时,MATLAB就会保持一个文件位置指针(FilePositionIndicator),由它决定下一次进行数据读取或写入的位置。

控制此指针的函数如表2-8所示。

表2-8 

控制位置指针的函数

功能说明

fseek

设定指针位置

ftell

获得指针位置

frewind

重设指针到文件起始位置

feof

测试指针是否在文件结束位置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1