Using fprintf to specify a filename for write to text file in loop
    14 views (last 30 days)
  
       Show older comments
    
I am creating a number of text files (or really m files) in a loop. The filenames should be sequential, having the suffix 1,2,3... I wanted to use fprintf to specify the filename in the loop. However, I get the error in line 2: "invalid filename." How can I achieve what I am trying to do? I've pasted an example code below.
for k=1:25
      fid = fopen(fprintf('K_a_12_%dx.m',k),'w');
      fprintf(fid, 'function [K_a_12]=K_a_12_%dx(G_a,E_a,h_a)\n',k);
      fprintf(fid, 'K_a_12=zeros(10,100)\n');
      for i=(1+(k-1)*10):(k*10);
          for j=1:100;
                  fprintf(fid, 'test');
          end
      end
      fclose(fid);
end
0 Comments
Accepted Answer
  dpb
      
      
 on 20 Oct 2013
        Use  sprintf instead--*fprintf* w/o a unit number writes to screen so you're left w/ nothing in the filename location.
fid = fopen(sprintf('K_a_12_%dx.m',k),'w');
I'd suggest if you're creating files w/ such numbering systems to use the leading zeros in a fixed width field for the numbering. Then you'll get a collated ordering based on numeric order instead of collating order automagically...that is, make the format string
fn = sprintf('K_a_12_%3.3dx.m',k);
fid = fopen(fn,'w');
Using the separate filename in the fopen is matter of taste; building it separately can help in debugging during development if on then wants to fold it into the fopen can...
0 Comments
More Answers (1)
See Also
Categories
				Find more on Entering Commands in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
