2014-09-05 159 views
2

我對Matlab和編程一般都很陌生,並且很樂意爲以下內容提供一些幫助。我在網站上查看,但無法找到答案。使用matab的fopen創建多個文本文件for循環

我想使用for-loop和fprintf給我一堆單獨的文本文件,其文件名包含我用於for循環的索引。例如,見這一段代碼來獲得想要什麼,我做的想法:

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文件(i是1到20),其中 表1.txt只包含[1,exp(1)], 表2.txt包含[1,exp(1)] \ newline [2 ,exp(2)] 等等。

如果我運行上面的腳本,我只能得到一個文本文件(命名爲'table z.txt',所有數據都附加在下面,所以fopen的命名不會'感覺'z值,而是解釋z作爲一封信(其中,看到引號並不真的讓我感到驚訝)

我認爲必須有一個優雅的方式來做到這一點,但我一直沒有找到它,我希望有人可以幫助。 最佳, 大號

回答

1

use num2str and string concatenation [ ... ]

fid = fopen(['table ' num2str(z) '.txt'],'a'); 
+1

謝謝!這就是我所追求的 – 2014-09-05 09:55:27

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 
+0

謝謝!好建議 – 2014-09-05 09:55:50