views:

165

answers:

4

I have a loop like this:

for i=1:no

  %some calculations

  fid = fopen('c:\\out.txt','wt');
  %write something to the file
  fclose(fid);

end

I want data to be written to different files like this:

  • for i=1, data is written to out1.txt
  • for i=2, data is written to out2.txt
  • for i=3, data is written to out3.txt
  • etc.

Doing 'out'+ i does not work. How can this be done?

+1  A: 

Did you try:

int2str(i)
Richard Morgan
+3  A: 

filename = strcat('out', int2str(i), '.txt');

Dan Vinton
A: 

More simply:

for i=1:no
  %some calculations
  fid = fopen(['c:\out' int2str(i) '.txt'],'wt');
  %write something to the file
  fclose(fid);

end

PS. I don't believe Matlab strings need escaping except for '' (unless it's a format string for *printf style functions)

EDIT: See comment @MatlabDoug

KitsuneYMG
int2str(i) not int2str(1)
MatlabDoug
+4  A: 

Yet another option would be the function SPRINTF:

fid = fopen(sprintf('c:\\out%d.txt',i),'wt');
gnovice