MATLAB dlmwrite()和dlmread()的用法(附带实例)
为处理文本文件,MATLAB 还提供了多种处理函数,使用不同的格式读取不同数据类型的文本文件。本节讲解常用的 dlmwrite() 和 dlmread() 的用法。
dlmwrite() 函数的调用格式如下:
【实例】 dlmwrite() 函数的应用示例。在命令行窗口中输入如下代码,并保存为 M 文件。
【实例】向文件中写入多行数据。在命令行窗口中输入如下代码,并保存为 M 文件。
【实例】dlmread() 函数的应用示例。在命令行窗口中输入如下代码,并保存为 M 文件。
MATLAB dlmwrite()函数
在 MATLAB 中,利用 dlmwrite() 函数可以向文档中写入数据,功能强于 csvwrite() 函数。dlmwrite() 函数的调用格式如下:
- dlmwrite('fName', M):将矩阵 M 的数据写入文件 fName 中,以逗号分隔。
- dlmwrite(fName, M, 'D'):将矩阵 M 的数据写入文件 fName 中,采用指定的分隔符分隔数据。如果需要 Tab 键,则可以用“\t”指定;
- dlmwrite('fName', M, 'D', R, C):指定写入数据的起始位置;
- dlmwrite(fName, M, 'attrib1', value1, 'attrib2', value2, ...):指定任意数目的参数。可以指定的参数如下表所示;
- dlmwrite('fName', M, '-append'):如果 fName 指定的文件存在,则在文件后面写入数据;如果不存在,则覆盖源文件;
- dlmwrite('fName', M, '-append', attribute-value list):续写文件,并指定参数。
参数名 | 功能 |
---|---|
delimiter | 用于指定分隔符 |
newline | 用于指定换行符,可以选择“PC”或“UNIX” |
rroffset | 行偏差,指定文件第一行的位置,rroffset的基数为0 |
coffset | 列偏差,指定文件第一列的位置,coffset的基数为0 |
precision | 指定精确度,可以指定精确维数,或者采用C语言的格式,如“%17.5f” |
【实例】 dlmwrite() 函数的应用示例。在命令行窗口中输入如下代码,并保存为 M 文件。
clear all m=rand(4); dlmwrite('myfile2.txt',m,'delimiter','\t','precision',5) %指定精确度 type myfile2.txt dlmwrite('myfile4.txt',m,'delimiter','\t','precision',3) %指定精确度 type myfile4.txt运行后,输出结果如下:
0.24352 0.25108 0.83083 0.28584 0.92926 0.61604 0.58526 0.7572 0.34998 0.47329 0.54972 0.75373 0.1966 0.35166 0.91719 0.38045 0.244 0.251 0.831 0.286 0.929 0.616 0.585 0.757 0.35 0.473 0.55 0.754 0.197 0.352 0.917 0.38
【实例】向文件中写入多行数据。在命令行窗口中输入如下代码,并保存为 M 文件。
clear all M = magic(3); dlmwrite('myfile5.txt', [M*5 M/5], ' ') type myfile5.txt %输出 myfile5.txt 进行第一次观察 dlmwrite('myfile5.txt', rand(3), '-append', 'rroffset', 1, 'delimiter', ' ') type myfile5.txt %输出 myfile5.txt 进行第二次观察运行后,输出结果如下:
%输出 myfile5.txt 进行第一次观察的结果 40 5 30 1.6 0.2 1.2 15 25 35 0.6 1 1.4 20 45 10 0.8 1.8 0.4 %输出 myfile5.txt 进行第二次观察的结果 40 5 30 1.6 0.2 1.2 15 25 35 0.6 1 1.4 20 45 10 0.8 1.8 0.4 0.56782 0.5308 0.12991 0.075854 0.77917 0.56882 0.05395 0.93401 0.46939
MATLAB dlmread()函数
在 MATLAB 中,利用 dlmread() 函数可以从文档中读取数据,其调用格式如下:M=dlmread(fName) M=dlmread(fName,delimiter) M=dlmread(fName,delimiter,R,C) M=dlmread(fName,delimiter,range)
- fName 文件中只能包含数字,并且数字之间以逗号分隔;
- M 是一个数组,其行数与 fName 的行数相同,列数为 fName 列的最大值;对于元素不足的行,以 0 补充;
- 参数 delimiter 用于指定文件中的分隔符;
- 读取的数据由数组 range 指定,range 的格式为 [R1 C1 R2 C2]。其中,R1、C1 为读取区域左上角的行和列,R2、C2 为读取区域右下角的行和列。
dlmread() 函数与 csvread() 函数的差别在于,dlmread() 函数在读取数据时可以指定分隔符,如果不指定,则默认分隔符为逗号。
【实例】dlmread() 函数的应用示例。在命令行窗口中输入如下代码,并保存为 M 文件。
clear all M = gallery('integerdata', 100, [5 8], 0); dlmwrite('myfi1e.txt', M, 'delimiter', '\t') m1=dlmread('myfi1e.txt') m2=dlmread('myfi1e.txt', '\t', 2, 3) m3=dlmread('myfi1e.txt', '\t', 'c1..G4')运行后,输出结果如下:
m1 = 96 77 62 41 6 21 2 42 24 46 80 94 36 20 75 85 61 2 93 92 82 61 45 53 49 83 74 42 1 28 94 21 90 45 18 90 14 20 47 68 m2 = 92 82 61 45 53 42 1 28 94 21 90 14 20 47 68 m3 = 62 41 6 21 2 80 94 36 20 75 93 92 82 61 45 74 42 1 28 94