实验八MATLAB文件操作与数据导入导出 下载本文

实验八 Matlab 文件操作与数据接口

一、实验目的

1、熟练掌握工作区变量的文件操作; 2、熟练掌握文本文件的读写操作;

3、熟练掌握格式化文本文件的输入输出语句的执行 4、了解二进制文件、Mat文件的读写操作

二、实验仪器与软件

1. PC计算机 2. Matlab软件

三、实验原理

1. 二进制文件与文本文件的区别:

将文件看作是由一个一个字节(byte) 组成的, 那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是 两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的 0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII 码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记 事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种: ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASCII码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓ 十进制码: 5 6 7 8

共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。Matlab 中存储成为二进制还是文本文件取决于fopen的方式,如果用wt,则存储为文本文件,这样用记事本打开就可以正常显示了;如果用w则存储为二进制文件,这样用记事本打开会出现小黑方块,要正常显示的话,可以用写字板或UltraEdit等工具打开。

2. MATLAB文件操作与数据导入导出

2.1 文件的打开和关闭 2.1.1 文件的打开

无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它的使用语法如下: fopen ('filename', 'mode')

其中filename表示要读写的文件名称,mode则表示要对文件进行的处理方式,可以是表2-1中的任一字符串。

表2-1 文本文件打开的模式

mode rt wt at r+t w+t a+t At Wt 意 义 以只读方式(Reading)打开文件 以只写方式(Writing)打开文件 以追加方式(Appending)打开文件,新内容将从原文件后面续写 以同时读写方式打开文件 以同时读写创建文件,原文件内容被清除 以同时读和追加(Reading and Appdending)方式,原文件内容被保留,新内容将从原文件的后面开始 以读写方式打开或创建文件,适用于对磁带介质文件的操作 以写入方式打开或创建文件,原文件内容被清除,适用于磁带介质文件的操作

fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。

下面以脚本m文件为例来声明文件的打开。 例2-1 %exam1.m

[f,message]=fopen('fileexam1', 'r') if f==-1

disp (message); %显示错误信息 end

若文件fileexam1不存在,则显示如下信息。

Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m

[f,message]=fopen('fileexam2', 'r'); if f==-1

disp (message); %显示错误信息 else disp(f); end

若文件fileexam2存在,则返回f值。

2.1.2 文件的关闭

一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose函数来关闭文件,其适用语法如下。 fclose(f)