如何通过Matlab在文件的每一行结尾写?

时间:2016-02-23 02:11:43

标签: matlab

假设我有矩阵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列。

我该怎么做?感谢。

2 个答案:

答案 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