在matlab上用fprintf编写一个文本文件

时间:2013-10-15 12:48:24

标签: matlab

我正在尝试在matlab上使用fprintf编写一个文本文件。我使用for循环:

fID = fopen('fileName','w');
fSpec = cat(2,repmat('%s', 1, 3),'\n');
for k=1:10
    to_write = [num2str(k) ',' num2str(k*k)];
    fprintf(fID, fSpec, to_write);
end
fclose(fID);

写入文件,但仅限一行。我尝试用gedit和matlab打开它。

有什么问题?

2 个答案:

答案 0 :(得分:4)

您的格式说明符有点奇怪。 to_write将是一个纯字符串,那么为什么要将fSpec构造为%s%s%s\n

如果你想要每个循环一行,你可以简单地执行:

for k=1:10
    to_write = [num2str(k) ',' num2str(k*k)];
    fprintf(fID, '%s\n', to_write);
end

编辑:

如果%s%s%s\n设计为匹配[num2str(k) ',' num2str(k*k)]中的三个字符串:这不是必需的。 [num2str(k) ',' num2str(k*k)]的结果只是一个字符串 - 因此您只需要一个'%s'格式说明符,而不是三个。

答案 1 :(得分:0)

我能在你的代码中找到两件小事。

首先,您希望在写完每一行后点击返回,因此\n。其次,您尝试使用fprint编写字符串值,因为您使用%s,将其更改为%d我认为解决了它!

因此更新后的代码应为:

fID = fopen('fileName','w');
fSpec = cat(2,repmat('%d', 1, 3),'\n');
for k=1:10
    to_write = [num2str(k) ',' num2str(k*k)];
    fprintf(fID, fSpec, to_write);
end

fclose(fID);