Unable to store data in while loop to plot
2 次查看(过去 30 天)
显示 更早的评论
I am trying to display a smooth graph/plot of the position over time, but I cannot for the life of me figure out how to store the values in order to display the data from he loop. here is the code:
%%Initialized Conditions clear all;close all;clc; g = 32.2 ./6; %gravity constant in ft/s^2 h = randi([1000 10000],1); %initial height v = randi([-100 -40],1); %initial velocity weight = 2500; %lbs mass = weight./g; %craft mass (tons/gravity) playing_flag = 1; t = 0; %time elapsed in seconds dt = 1; %time interval in seconds vmax = 7; %max successful landing speed in ft/s
%%Introduction fprintf('You are in a %.0f lb spacecraft\n',weight); fprintf('Try to land with a speed of less than %.0f ft/s\n',vmax);
%%Game loop until done while playing_flag==1 %%current position and velocity fprintf('\nTime:%3.0f sec, Altitude: %6.1f ft, Velocity: %5.1f ft/s\n',t,h,v); %%user input input_flag = 1; while input_flag==1 fprintf('<strong>Please enter a vertical thrust value.</strong>\n'); thrust = input('*Thrust input must be between -10 and 10(k-lbs/s)* '); if isempty(thrust) thrust = 0; end if abs(thrust)<=10 input_flag=0; else fprint('Invalid input. Thrust must be between -10 and 10\n'); end end %%calculate new values a = -g + thrust*1000./mass;
%time to hit the ground from current position %if it is less than dt, use it thit=roots([a./2 v h]); if length(thit)>=1 && isreal(thit(1)) && thit(1)>0 && thit(1)<dt dt=thit(1); end if length(thit)>=2 && isreal(thit(2)) && thit(2)>0 && thit(2)<dt dt=thit(2); end
h = h + v.*dt + a./2.*dt.*dt; v = v + a.*dt; t = t + dt;
%%check if landed if abs(h)<=0.1 playing_flag = 0; if abs(v)<vmax msg = 'Successful landing!'; else msg = 'Houston, we have a problem. Spacecraft down.'; end fprintf('%s \nYou landed with a velocity of %.1f ft/s\n',msg,v); end end
pause
0 个评论
回答(1 个)
Naman Kaushik
2023-6-22
Hi MadT,
As per my understanding, you want to plot the result in the order that they appear.
To get the current time, you can use the “datetime” function in MATLAB and by setting the parameter “relativeDay” as “now”.
To plot the data, you can use a combination of the “plot” function of MATLAB with the “hold” functionality turned on.
For more information on the above-mentioned functions, you can refer to the following documentation:
For “datetime” function:
For “plot” function:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!