How to extract a specific value from a loop.

12 ビュー (過去 30 日間)
Westin Messer
Westin Messer 2018 年 8 月 31 日
コメント済み: Dennis 2018 年 9 月 3 日
Hello
I wrote this code to model a simple projectile motion problem. What I would like to do now is output the value for x after 2 seconds but I don't know how to pull just one value out of a for loop.
%Projectile motion
v0= 10;
a= 45;
h= .04;
a=a*pi/180;
g=9.8; %acceleration due to gravity in m/s^2
xmax=v0^2*sin(2*a)/g;
ymax=v0^2*sin(a)^2/(2*g);
td=2*v0*sin(a)/g; %total time
x1=0;
y1=0;
figure('color','white');
for t=0:h:td+h
plot(x1,y1,'bo')
hold all
xlim([0 1.1*xmax]);
ylim([0 1.1*ymax]);
title('Projectile Motion');
xlabel('Distance in meter');
ylabel('Height in meter');
getframe;
x1=x1+h*v0*cos(a); %Euler's method for x
y1=y1+h*(v0*sin(a)-g*t);%Euler's method for y
% x1(2) % this is where I'm having the problem
end

採用された回答

M
M 2018 年 8 月 31 日
t is your time variable, so you have to use it to test if it's equal to 2seconds.
if t==2 % assumes your time units is seconds
x_2sec=x1;
end
but in your code, t will never reach 2 seconds.
  4 件のコメント
M
M 2018 年 9 月 3 日
When I do that nothing outputs. Matlab doesn't seem to recognize that if statement. Am I using it wrong?
Your time step is equal to 0.4, so your time variable will be succesively equal to t=1.28 and 1.32, and your condition will never be satisfied.
Dennis
Dennis 2018 年 9 月 3 日
To check if t==1.32 would not work either. Due to floating point limitations t will not be exactly 1.32.

サインインしてコメントする。

その他の回答 (1 件)

GK
GK 2018 年 8 月 31 日
Yes you can. 1. If you remove semicolon at the end of expression, MATLAB simply shows it at the command line 2. Alternately, you can also print it in excel file using- xlswrite('x1values.xlsx', x1);

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by