我正在尝试在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打开它。
有什么问题?
答案 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);