我试图在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打开它。
怎么了?
最佳答案
你的格式说明符有点奇怪。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'
格式说明符,而不是三个。