MATLAB混合编程中的数据交流
MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:
● 用户所执行的操作是导入数据还是导出数据;
● 数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。
将数据导入MATLAB中最容易的方法就是使用导入数据模板(Import Wizard),使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。
本章重点内容如下:
● 文件的打开和关闭
● 文本文件的读取
● 存写ASCII数据
● 二进制数据的读取
● 二进制数据的存写
● 使用I/O文件函数进行数据读写
● MAT 文件的读写
2.1 文件的打开和关闭
2.1.1 文件的打开
无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它的使用语法如下:
fopen ('filename', 'mode')
其中filename表示要读写的文件名称,mode则表示要对文件进行的处理方式,可以是表2-1中的任一字符串。
表2-1 文本文件打开的模式
|
mode |
意 义 |
|
rt |
以只读方式(Reading)打开文件 |
|
wt |
以只写方式(Writing)打开文件 |
|
at |
以追加方式(Appending)打开文件,新内容将从原文件后面续写 |
|
r+t |
以同时读写方式打开文件 |
|
w+t |
以同时读写创建文件,原文件内容被清除 |
|
a+t |
以同时读和追加(Reading and Appdending)方式,原文件内容被保留,新内容将从原文件的后面开始 |
|
At |
以读写方式打开或创建文件,适用于对磁带介质文件的操作 |
|
Wt |
以写入方式打开或创建文件,原文件内容被清除,适用于磁带介质文件的操作 |
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)
其中f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。一般来说,在完成对文件的读写操作后就应关闭它,以免造成系统资源浪费。此外,需注意的是,打开和关闭文件都比较耗时,因此为了提高程序执行效率,最好不要在循环体内使用文件。
若要一次关闭打开的所有文件,可以使用下面的命令:
fclose all
















