用文本文件进行数据传输是一种很常见的数据传输方式,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保存在某个目录下。在当前目录窗口中将该目录设置为当前目录以后,在命令窗口中输入下面的命令:
图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中的数据类型可以是列矢量、矩阵、单元数组或表。设置好后,单击“导入所选内容”按钮,导入选择的数据。
图1-3 用工具导入文本文件数据