Saving a text file as a time step array
Show older comments
Hi. I am writing a simulation that analyzes the X,Y,Theta cordinates of the system. I am running the simulation by TMAX and for N particles. However, since TMAX is usually very large, I only want the data for every 100 time steps. Currently, my code gives me the information for every time step and particle position. However, it spits all the information onto one matrix, IE if I am running a 12 particle simulation for 50 steps (short for the example), the first 12 rows are particles 1-12 and there positions at time=10. However, the next 12 rows are particles 1-12 at time=20 and so on. How would I make each time step into its own text file? Below is my code:
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
Thank you very much!
9 Comments
KSSV
on 9 Jul 2019
YOu want to write a seperate file for each step?
ben
on 9 Jul 2019
Anything is possible (with different amount of difficulty of course).
It's not clear how the snippet of code you show is relevant to your question. What you show will print TMAX/10 times the same thing, while wasting a lot of time doing iterations that don't print or calculate anything.
edit: I missed that x and y are a cumulative sum, so you are printing different things each time. However, you still waste a lot of time counting and not doing anything.
ben
on 9 Jul 2019
You haven't given us enough information for us to answer. Are the variables, x, y, vel, dt, theta scalars? Are any of them matrices? Where do the particles you mention figure into any of this.
Are the equations you show the actual equations. If so, why are you using a loop?
ben
on 9 Jul 2019
Guillaume
on 9 Jul 2019
I understand what you want to achieve. What I don't understand is what you start from. The code you show just add a constant (vel*cos(theta)*dt) each step of the loop. This could be rewritten as simply:
x0 = ???
x = (1:TMAX) .* vel*cos(theta)*dt + x0; %calculate x for 1*constant, 2*constant, etc.
which can then be easily sliced any way you want. Again, I don't see how the particles figure into this, so I'm not sure if that's what you're after.
ben
on 9 Jul 2019
Guillaume
on 9 Jul 2019
Would posting the entire code be helpful?
Probably, or a better explanation.
Accepted Answer
More Answers (0)
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!