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 CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by