1.dlmread函数的功能
将数据文件读入矩阵,只能读取数值数据(dat、txt、csv等文件)。如果文件中含有文本,如果文件中含有文本,则需使用范围参数进行跳过。结果的返回值为一个矩阵。
2.调用方式
M = dlmread(filename)
M = dlmread(filename,delimiter)
M = dlmread(filename,delimiter,R1,C1)
M = dlmread(filename,delimiter,[R1 C1 R2 C2])
- filename(文件名),指定为字符向量或字符串。
示例:'myFile.dat'
或"myFile.dat"
数据类型:char
|string
- delimiter(分隔符),指定分隔符的形式(空格或者逗号等),为字符向量或字符串。使用
'\t'
指定标签分隔符。
示例:','
或","
示例:' '
或" "
数据类型:char
|string
- [R1 C1 R2 C2],通过设置范围矩阵,选择要读取的范围。
R1:起始行偏移量,指定为非负整数。第一行的偏移量为0。
C2:起始列偏移量,指定为非负整数。第一列的偏移量为0。
R2:结束行偏移量,指定为非负整数。第一行的偏移量为0。
C2:结束列偏移量,指定为非负整数。第一列的偏移量为0。
3.使用示例
(1)读取整个数值文本
M = dlmread('count.dat')
读取整个.dat
文件并返回一个矩阵。
(2)读取包含空分隔符的文本
将两个矩阵写入一个文件,然后使用dlmread
读取整个文件。
首先,将一个矩阵写入名为的文件myfile.txt
。然后,将另外一个矩阵附加到该文件后面,第2个矩阵与第1个矩阵之间包含一个空行。
X = magic(3); %生成3阶magic矩阵
dlmwrite('myfile.txt',[X*5 X/5],' ') %写入第一个矩阵,分为两个块,一个为X*5,一个为X/5,数据之间空格分隔
dlmwrite('myfile.txt',X,'-append', ...
'roffset',1,'delimiter',' ') %在第一个矩阵后面偏移一行,再写入第二个矩阵
显示文本内容:
type myfile.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
8 1 6
3 5 7
4 9 2
使用 dlmread
读取整个文本:
M = dlmread('myfile.txt')
M = 6×6
40.0000 5.0000 30.0000 1.6000 0.2000 1.2000
15.0000 25.0000 35.0000 0.6000 1.0000 1.4000
20.0000 45.0000 10.0000 0.8000 1.8000 0.4000
8.0000 1.0000 6.0000 0 0 0
3.0000 5.0000 7.0000 0 0 0
4.0000 9.0000 2.0000 0 0 0
如果读取的文本中的数值不能构成一整个矩阵,空缺的部分会自动使用零元素进行填充。
(3)从特定的行和列偏移开始读取文本
创建一个名为dlmlist.txt
的文件,数据之间以空格作为分隔符。
%dlmlist.txt文件如下:
test max min direction
10 27.7 12.4 12
11 26.9 13.5 18
12 27.4 16.9 31
13 25.1 12.7 29
读取文件中的数值。指定分隔符为空格,行偏移量为1,列偏移量为0。
filename = 'dlmlist.txt';
M = dlmread(filename,' ',1,0)
M =
10.0000 27.7000 12.4000 12.0000
11.0000 26.9000 13.5000 18.0000
12.0000 27.4000 16.9000 31.0000
13.0000 25.1000 12.7000 29.0000
指定读取文件的起始行和列,即从文本的第2行开始读取。
(4)从指定范围读取文本
还是利用上面(3)中的dlmlist.txt
文件,从文本中仅读取数据的最后两行。
M = dlmread('dlmlist.txt','',[3 0 4 3])
M =
12.0000 27.4000 16.9000 31.0000
13.0000 25.1000 12.7000 29.0000