[matlab] dlmwrite函數(shù)的用法

?dlmwrite函數(shù)的用處:將數(shù)組中的數(shù)值數(shù)據(jù)寫入文件中。??
? ? ? dlmwrite在 R2006a 之前推出;R2019a及以后的版本,不推薦使用 dlmwrite。推薦用 writematrix。從 R2019a 開始,使用 writematrix 函數(shù)將矩陣寫入帶分隔符的文本文件。與 dlmwrite 函數(shù)相比,writematrix 函數(shù)具有更好的跨平臺支持和性能。基礎(chǔ)示例如下:
? ? ?dlmwrite('mydata.txt',M)
? ? ?writematrix(M,'mydata.txt')
1、dlmwrite語法與說明
dlmwrite('filename',M)
將數(shù)組 M 中的數(shù)值數(shù)據(jù)寫入一個 ASCII 格式的文件 filename,并使用默認(rèn)分隔符 (,) 分隔各數(shù)組元素。如果文件 filename 已存在,則 dlmwrite 將覆蓋該文件。
?
dlmwrite('filename',M,'-appendv')
將數(shù)據(jù)追加到現(xiàn)有文件 filename 的末尾。
?
dlmwrite('filename',M, 'delimiter',';')
將數(shù)組M寫入文件 filename,并使用指定分隔符 delimiter 分隔各數(shù)組元素。
dlmwrite('filename',M,'precision',3)
指定有效位數(shù)或精度。
dlmwrite('filename',M,'precision',3,'delimiter',';','roffset',2,'coffset',1)
從目標(biāo)文件中指定的第2行和第1列開始寫入數(shù)組。行和列用 delimiter指定的元素填充。
2、參數(shù)解釋
filename - 要寫入的文件的名稱
? ? ? ?要寫入的文件的名稱,指定為字符向量或字符串。示例: 'myFile.txt' 或 "myFile.txt"
數(shù)據(jù)類型: char | string
M- 要寫入的數(shù)值數(shù)據(jù)
? ? ? ?矩陣 | 要寫入的數(shù)值數(shù)據(jù),指定為矩陣或數(shù)值元胞數(shù)組(每個元胞分配一個值)。
示例: [1,2,3;4,5,6]? ? ? 示例: {1,2,3;4,5,6}
類型:single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | cell
復(fù)數(shù)支持:是
precision - 數(shù)值精度
? ? ??向文件中寫入數(shù)據(jù)時使用的數(shù)值精度,指定為用逗號分隔的對組,由 'precision'加標(biāo)量或以%開頭的格式設(shè)定符(例如'%10.5f')組成。
示例: 'precision',3? ? ? ? ? ? ?如果 precision 的值為標(biāo)量,則其指示的是有效位數(shù)的個數(shù)。
示例: 'precision', '%10.5f'? ? ?? 指定數(shù)值精度。
數(shù)據(jù)類型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char
delimiter - 用于分隔數(shù)組各元素的分隔符
? ? ? ',' (默認(rèn)) | 字符向量 | 字符串。用于分隔數(shù)組元素的分隔符,指定為包含一個或多個控制序列字符的字符向量或字符串。使用 '\t' 可生成以制表符分隔的文件。
示例1: '; ' 或 ";"? ? ? ? ? ? ? ? ?示例2: '\t' 或 "\t"
數(shù)據(jù)類型: char | string
roffset - 行偏移量
? ? ? ? 行偏移量,指定為包含 'roffset' 和標(biāo)量、以逗號分隔的對組。行偏移量指示寫入數(shù)值數(shù)據(jù)前所跳過的行數(shù)。這些行將用指定的分隔符填充。將新數(shù)據(jù)追加到現(xiàn)有文件時,新數(shù)據(jù)距現(xiàn)有數(shù)據(jù)的末尾有一定偏移。
? ? ? ? 行偏移量從 0 開始,因此 'roffset',0 指示 MATLAB 從目標(biāo)文件的第一行開始寫入(即默認(rèn)值)。但是,當(dāng)追加到文件時,'roffset',0 指示 MATLAB 從緊隨現(xiàn)有數(shù)據(jù)后的第一行開始寫入。? ? ? 示例: 'roffset',2
coffset - 列偏移量
0 (默認(rèn)) | 標(biāo)量
? ? ? ? 距目標(biāo)文件左側(cè)的列偏移量,指定為用逗號分隔的對組,由 'coffset' 和標(biāo)量組成。列偏移量指示寫入數(shù)值數(shù)據(jù)前所跳過的列數(shù)。這些列將用指定的分隔符分隔。列偏移量從 0 開始,因此 'coffset',0 指示 MATLAB 從目標(biāo)文件的第一列開始寫入(即默認(rèn)值)。示例: 'coffset',1
newline - 行終止符
'pc' | 'unix'
行終止符,指定為逗號分隔的對組,由 'newline' 和使用回車符/換行符 (CR/LF) 的 'pc' 或使用換行符 (LF) 的 'unix' 所組成。
示例: 'newline','pc'
?
提示:dlmwrite 寫入的文件可用電子表格程序讀取。此外,如果您的系統(tǒng)安裝了適用于 Windows的 Excel,可以使用 xlswrite 創(chuàng)建電子表格。
3、dlmwrite使用示例
例1:寫入以制表位分隔的數(shù)據(jù)
M = magic(3);??????????? %? 魔方矩陣
dlmwrite('myFile.txt',M)??? % ?將矩陣 M 寫入文件 myFile.txt
type('myFile.txt')? ?
8,1,6
3,5,7
4,9,2
例2:寫入數(shù)據(jù)并指定精度
M = magic(3)*pi?????? % 創(chuàng)建樣本數(shù)據(jù)數(shù)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位有效數(shù)字。
type('myFile.txt')?? % 查看文件中的數(shù)據(jù)。
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位小數(shù)精度將矩陣M導(dǎo)入到文件。
type('myFile.txt')? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? %? 查看文件中的數(shù)據(jù)。
?
8.000000,1.000000,6.000000
3.000000,5.000000,7.000000
4.000000,9.000000,2.000000
?
例3:寫入和追加數(shù)據(jù)到文件
M =magic(5);???? %創(chuàng)建兩個樣本數(shù)值數(shù)據(jù)數(shù)組。
N = magic(3);
dlmwrite('myFile.txt',M,'delimiter',' ');???? % 將矩陣 M 導(dǎo)入到文件并使用空白作為分隔符。
dlmwrite('myFile.txt',N,'-append',...'delimiter',' ','roffset',1)??? % 從現(xiàn)有數(shù)據(jù)偏移一行,將矩陣 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' 中的數(shù)據(jù)。當(dāng) 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
[matlab] dlmwrite函數(shù)的用法的評論 (共 條)
