我对Matlab和编程很新,并希望得到以下的一些帮助。我在网站上看到了,但找不到答案。
我正在尝试使用for循环和fprintf给我一堆单独的文本文件,其文件名包含我用于for-loop的索引。请参阅这段代码,以了解我想要做的事情:
for z=1:20
for x=1:z;
b=[x exp(x)];
fid = fopen('table z.txt','a');
fprintf(fid,'%6.2f, %6.2f\n',b);
fclose(fid);
end
end
我正在寻找的是一个脚本(在这种情况下)给了我20个单独的.txt文件,名称为'table i.txt'(我是1到20),其中 table 1.txt只包含[1,exp(1)], 表2.txt包含[1,exp(1)] \ newline [2,exp(2)] 等等。
如果我运行上面的脚本,我只得到一个文本文件(名为'table z.txt',下面附加了所有数据。所以fopen的命名并不'感觉'是z值,而是将z解释为一封信(看到引号并不让我感到惊讶)
我认为必须有一种优雅的方式来做到这一点,但我找不到它。我希望有人能帮帮忙。 最好, →
答案 0 :(得分:1)
使用num2str
和字符串连接[ ... ]
。
fid = fopen( ['table ' num2str(z) '.txt'],'a');
答案 1 :(得分:0)
在最里面的循环中打开文件效率很低,您应该在知道z
后立即创建文件(参见下面的示例)。要以与fprintf相同的方式格式化字符串,可以使用sprintf
。
for z=1:20
fname = sprintf('table %d.txt',z);
fid = fopen(fname,'w');
for x=1:z
fprintf(fid,'%6.2f, %6.2f\n', x, exp(x));
end
fclose(fid);
end