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

长风破浪会有时,直挂云帆济沧海。