假设我有矩阵M喜欢
1 2 3
4 5 6
7 8 9
我使用
写入文件dlmwrite( fullfile('C:\Users\xyz\Documents\MATLAB','test.txt'), M, 'delimiter', ' ', 'newline', 'pc');
我想创建一个新文件,在每行的末尾添加一个字符,如
1 2 3 Z
4 5 6 Z
7 8 9 Z
注意:有n行和3列。如何在每行末尾添加Z作为第4列。
我该怎么做?感谢。
答案 0 :(得分:0)
如果您想先将现有数据读入M
,则需要使用textscan
。
filename = 'input.txt';
fid = fopen(filename, 'rb');
M = textscan(fid, '%d %d %d');
M = cat(2, M{:});
fclose(fid);
然后写出来,你会想要使用fprintf
而不是dlmwrite
,因为dlmwrite
仅适用于数字输入参数。
fid = fopen(filename, 'wb');
fprintf(fid, '%d %d %d Z\r\n', M');
fclose(fid);
这里的诀窍是fprintf
接受输入直到你用完为止,所以不是循环遍历M
的所有行,你可以简单地传递整个矩阵(通过转置确保行主要排序)运算符)到fprintf
,它很乐意将数据写入文件,直到M
中的数据用完为止。
请注意使用\r\n
这是PC断行所必需的。
答案 1 :(得分:0)
改为使用fprintf
:
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
fid = fopen('file.txt', 'wt');
for i = 1:3
fprintf(fid, '%d %d %d Z\n', A(i,1), A(i,2), A(i,3));
end