如何在多个时间步中将代码保存到文本文件中?

时间:2019-07-10 07:34:43

标签: matlab

我正在编写一个模拟,分析系统的X,Y,Theta坐标。我正在通过TMAX和N个粒子运行模拟。但是,由于TMAX通常非常大,所以我只希望每100个时间步长获取数据。当前,我的代码为我提供了每个时间步长和粒子位置的信息。但是,它将所有信息分散到一个矩阵上,即IE,如果我运行12个粒子模拟进行50步(本示例的简称),则前12行是粒子1-12,它们在时间= 10时的位置。但是,接下来的12行是时间= 20时的粒子1-12,依此类推。我如何每次都进入自己的文本文件?下面是我的代码:

fid = fopen('word.txt','w');
for nn = 1:TMAX
   if mod(nn,10)==0

    x = x + vel*cos(theta)*dt;
    y = y + vel*sin(theta)*dt;
    fprintf(fid, '%4.5f\t%4.5f\t%4.5f\n', x,y,theta);
   end
end  

当前,这会将所有数据打印到一个矩阵中。行1-12是时间第一步,然后13-24是时间第二步。如何将每个时间步以不同的名称保存到自己的文件中?有什么办法可以使文件名可变吗?非常感谢

1 个答案:

答案 0 :(得分:0)

您可以将fopen命令放入循环中,并根据变量nn命名文件:

for nn = 1:TMAX
   if mod(nn,10)==0
      fid = fopen(['word' num2str(nn) '.txt'],'w');
      x = x + vel*cos(theta)*dt;
      y = y + vel*sin(theta)*dt;
      fprintf(fid, '%4.5f\t%4.5f\t%4.5f\n', x,y,theta);
      fclose(fid)
   end
end