读/写文本文件

用文本文件进行数据传输是一种很常见的数据传输方式,MATLAB提供了多种方式来实现文本文件的读/写。

使用load函数

使用load函数,可以将文件中的数据导入工作空间中,该函数的语法格式如下。

load:如果matlab.mat存在,则载入该文件中的所有变量;如果不存在,则返回一个错误。

load('filename'):载入filename指定的文件中的所有变量,要求给出文件的路径。如果filename没有指定扩展名,则load函数查找filename.mat并把它视为二进制MAT文件。如果filename有.mat以外的扩展名,则load函数把文件内容作为ASCII数据。

load('filename', 'X', 'Y', 'Z'):只载入MAT文件中指定的变量。

load('filename', '-regexp', exprlist):载入那些与exprlist参数中任何正则表达式匹配的变量,这里exprlist是用逗号间隔并用引号括起来的正则表达式。

load('-mat', 'filename'):不管文件扩展名是什么,强迫load函数把文件作为MAT文件导入。

load('-ascii', 'filename'):不管文件扩展名是什么,强迫load函数把文件作为文本文件导入。

S = load(...):把MAT文件中的内容返回到S中。

load filename -regexp expr1 expr2 ...:为语法的命令行格式。

【例1-3】假如有如图1-2所示的文本文件data.txt保存在某个目录下。在当前目录窗口中将该目录设置为当前目录以后,在命令窗口中输入下面的命令:

Document Image

图1-2 文本数据

load('-ascii','data.txt');

文件data.txt中的数据被导入工作空间中,并保存在data变量中,该变量名与数据的文件名相同。在命令窗口中输入

data

将显示该变量的值,即

data =

1 3 6

3 5 10

9 4 8

读/写值用逗号间隔的文本文件

用csvread和csvwrite函数可以读/写值用逗号间隔的文本文件。

用csvread函数可以读取值用逗号间隔的文件,该函数的语法格式如下。

M = csvread('filename'):读取值用逗号间隔的文件filename。结果返回到M中。该文件只能包含数值。

M = csvread('filename', row, col):在filename指定的文件中从row和col确定的位置处开始读入数据。row和col变量以0为基数,所以row=0和col=0指定文件中的第一个值。

M = csvread('filename', row, col, range):只读取指定范围内的数据。[R1 C1 R2 C2]用于指定range参数,其中,(R1,C1)为范围的左上角数据,(R2,C2)为范围的右下角数据。也可以用电子表格符号指定范围,例如range=¹A1...B7¹。

用csvwrite函数可以将数据写入文件中,数据之间用逗号间隔。该函数的语法格式如下。

csvwrite('filename',M):将矩阵M中的数据写入文件filename中,用逗号间隔值。

csvwrite('filename',M,row,col):将矩阵M中的数据从指定的行和列处写入文件filename中。行和列变量的基数为0。

读/写文本文件时指定间隔方式

用dlmread函数可以将指定间隔方式的文本文件读入矩阵中,该函数的语法格式如下。

M = dlmread('filename'):将文本文件filename中的数据读入矩阵M中。分隔数据元素的分隔符与文件的格式有关,默认时使用逗号。

M = dlmread('filename', delimiter):用指定的分隔符从文本文件filename中读取数值数据。\t用于指定表格键分隔符。

M = dlmread('filename', delimiter, R, C):用指定的分隔符从文本文件filename中读取数值数据。值R和C用于指定数据范围左上角的行和列。

M = dlmread('filename', delimiter, range):用变量range读取数值范围,range的形式为[R1 C1 R2 C2]。

用dlmwrite函数可以将一个矩阵写入指定间隔方式的文本文件中,该函数的语法格式如下。

dlmwrite('filename', M):用默认的逗号分隔矩阵元素,将矩阵M中的数据写入ASCII格式文件中。数据从目标文件filename的第一行的第一列开始写入。

dlmwrite('filename', M, 'D'):用分隔符D分隔矩阵元素,将矩阵M中的数据写入ASCII格式的文件。数据从filename文件的第一行第一列写入。逗号是默认的分隔符。

dlmwrite('filename', M, 'D', R, C):用分隔符D分隔矩阵元素,将矩阵A中的数据写入ASCII格式文件中。数据从目标文件filename的第R行第C列开始写入。

dlmwrite('filename', M, attribute1, value1, attribute2, value2, ...):是上面各语法的替代语法,可以在变量列表中以任意次序指定任意对属性-值。

dlmwrite('filename', M, '-append'):将矩阵数据添加到文件中。如果不指定'-append',则dlmwrite函数会覆盖文件中所有已经存在的数据。

dlmwrite('filename', M, '-append', attribute-value list):与上面的语法相同,但是接受一系列属性/值对。

【例1-4】将矩阵M输出到一个文本文件中,数据用表格键间隔,使用6个有效数字。

dlmwrite('myfile.txt', M, 'delimiter', '\t', 'precision', 6)

type myfile.txt

0.893898 0.284409 0.582792 0.432907

0.199138 0.469224 0.423496 0.22595

0.298723 0.0647811 0.515512 0.579807

0.661443 0.988335 0.333951 0.760365

利用工具导入文本文件数据

在MATLAB的“主页”工具栏中单击“导入数据”按钮,打开“导入数据”对话框。选择数据类型为文本,浏览并选择要导入的文本文件的名称,单击“打开”按钮,打开“导入”对话框,如图1-3所示。

导入MATLAB中的数据类型可以是列矢量、矩阵、单元数组或表。设置好后,单击“导入所选内容”按钮,导入选择的数据。

Document Image

图1-3 用工具导入文本文件数据