[matlab] dlmwrite函数的用法

dlmwrite函数的用处:将数组中的数值数据写入文件中。
dlmwrite在 R2006a 之前推出;R2019a及以后的版本,不推荐使用 dlmwrite。推荐用 writematrix。从 R2019a 开始,使用 writematrix 函数将矩阵写入带分隔符的文本文件。与 dlmwrite 函数相比,writematrix 函数具有更好的跨平台支持和性能。基础示例如下:
dlmwrite('mydata.txt',M)
writematrix(M,'mydata.txt')
1、dlmwrite语法与说明
dlmwrite('filename',M)
将数组 M 中的数值数据写入一个 ASCII 格式的文件 filename,并使用默认分隔符 (,) 分隔各数组元素。如果文件 filename 已存在,则 dlmwrite 将覆盖该文件。
dlmwrite('filename',M,'-appendv')
将数据追加到现有文件 filename 的末尾。
dlmwrite('filename',M, 'delimiter',';')
将数组M写入文件 filename,并使用指定分隔符 delimiter 分隔各数组元素。
dlmwrite('filename',M,'precision',3)
指定有效位数或精度。
dlmwrite('filename',M,'precision',3,'delimiter',';','roffset',2,'coffset',1)
从目标文件中指定的第2行和第1列开始写入数组。行和列用 delimiter指定的元素填充。
2、参数解释
filename - 要写入的文件的名称
要写入的文件的名称,指定为字符向量或字符串。示例: 'myFile.txt' 或 "myFile.txt"
数据类型: char | string
M- 要写入的数值数据
矩阵 | 要写入的数值数据,指定为矩阵或数值元胞数组(每个元胞分配一个值)。
示例: [1,2,3;4,5,6] 示例: {1,2,3;4,5,6}
类型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | cell
复数支持:是
precision - 数值精度
向文件中写入数据时使用的数值精度,指定为用逗号分隔的对组,由 'precision'加标量或以%开头的格式设定符(例如'%10.5f')组成。
示例: 'precision',3 如果 precision 的值为标量,则其指示的是有效位数的个数。
示例: 'precision', '%10.5f' 指定数值精度。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char
delimiter - 用于分隔数组各元素的分隔符
',' (默认) | 字符向量 | 字符串。用于分隔数组元素的分隔符,指定为包含一个或多个控制序列字符的字符向量或字符串。使用 '\t' 可生成以制表符分隔的文件。
示例1: '; ' 或 ";" 示例2: '\t' 或 "\t"
数据类型: char | string
roffset - 行偏移量
行偏移量,指定为包含 'roffset' 和标量、以逗号分隔的对组。行偏移量指示写入数值数据前所跳过的行数。这些行将用指定的分隔符填充。将新数据追加到现有文件时,新数据距现有数据的末尾有一定偏移。
行偏移量从 0 开始,因此 'roffset',0 指示 MATLAB 从目标文件的第一行开始写入(即默认值)。但是,当追加到文件时,'roffset',0 指示 MATLAB 从紧随现有数据后的第一行开始写入。 示例: 'roffset',2
coffset - 列偏移量
0 (默认) | 标量
距目标文件左侧的列偏移量,指定为用逗号分隔的对组,由 'coffset' 和标量组成。列偏移量指示写入数值数据前所跳过的列数。这些列将用指定的分隔符分隔。列偏移量从 0 开始,因此 'coffset',0 指示 MATLAB 从目标文件的第一列开始写入(即默认值)。示例: 'coffset',1
newline - 行终止符
'pc' | 'unix'
行终止符,指定为逗号分隔的对组,由 'newline' 和使用回车符/换行符 (CR/LF) 的 'pc' 或使用换行符 (LF) 的 'unix' 所组成。
示例: 'newline','pc'
提示:dlmwrite 写入的文件可用电子表格程序读取。此外,如果您的系统安装了适用于 Windows的 Excel,可以使用 xlswrite 创建电子表格。
3、dlmwrite使用示例
例1:写入以制表位分隔的数据
M = magic(3); % 魔方矩阵
dlmwrite('myFile.txt',M) % 将矩阵 M 写入文件 myFile.txt
type('myFile.txt')
8,1,6
3,5,7
4,9,2
例2:写入数据并指定精度
M = magic(3)*pi % 创建样本数据数M
M = 3×3
25.1327 3.1416 18.8496
9.4248 15.7080 21.9911
12.5664 28.2743 6.2832
dlmwrite('myFile.txt',M,'delimiter','\t','precision',3) % 用制表位字符分隔并用3位有效数字。
type('myFile.txt') % 查看文件中的数据。
25.1 3.14 18.8
9.42 15.7 22
12.6 28.3 6.28
M = magic(3);
dlmwrite('myFile.txt',M,'precision', '%.6f'); % 使用6位小数精度将矩阵M导入到文件。
type('myFile.txt') % 查看文件中的数据。
8.000000,1.000000,6.000000
3.000000,5.000000,7.000000
4.000000,9.000000,2.000000
例3:写入和追加数据到文件
M =magic(5); %创建两个样本数值数据数组。
N = magic(3);
dlmwrite('myFile.txt',M,'delimiter',' '); % 将矩阵 M 导入到文件并使用空白作为分隔符。
dlmwrite('myFile.txt',N,'-append',...'delimiter',' ','roffset',1) % 从现有数据偏移一行,将矩阵 N 追加到文件myFile.txt中。
type('myFile.txt') % 查看文件。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
8 1 6
3 5 7
4 9 2
dlmread('myFile.txt') % 使用 dlmread 读取 'myFile.txt' 中的数据。当 dlmread 读取文件中的两个矩阵时,将用零填充较小的矩阵。
ans = 8×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
8 1 6 0 0
3 5 7 0 0
4 9 2 0 0