使用matab在for循环中的fopen创建多个文本文件

时间:2014-09-05 09:30:17

标签: matlab fopen

我对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解释为一封信(看到引号并不让我感到惊讶)

我认为必须有一种优雅的方式来做到这一点,但我找不到它。我希望有人能帮帮忙。 最好, →

2 个答案:

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