How can i make this loop start at theta= zero and evaluate the same equations for values increasing by two (e.i at 0,2,4,6 etc.)
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Emily Gobreski
le 11 Juin 2016
Commenté : Emily Gobreski
le 12 Juin 2016
n=(360/Dth)+1
Trial>> for I=1:2:n R=12
w=(2*pi/5) Md=50 Theta=0 Thetarads= theta*pi/180
Id=(.5*Md*R^2)
Mp=75
Mb=30
alpha=0 u=.8 L=6*R theta=0 Dth=2 thetarads=theta*pi/180 rx=(R)*cos(theta)-L*cos(180)-L ry=(R*sin(theta))-(L*sin(180))-(R*sin(theta)) vx=(-R)*(w)*sin(theta) vy=(R)*(w)*cos(theta) alpha=0 ax=(-R)*alpha*sin(theta)-(R*(w^2)*cos(theta)) ay=(R)*alpha*cos(theta)-(R*w^2*sin(theta)) theta=theta+Dth end
2 commentaires
Chad Greene
le 11 Juin 2016
What equations do you need to evaluate for each I? It's generally good to do as little as possible inside a loop. For example, you can evaluate Mp=75 just once before the loop rather than computing it every time.
A small note: It's much easier to read and run your code if you can format it using the {}Code button when posting a question.
Réponse acceptée
Chad Greene
le 11 Juin 2016
Here's how you'd get ax and ay. First we define an array of values theta which go from 0 to 360 in steps of 2. Then we say for each value of theta, compute a corresponding value of ax and ay. I'm using k as a counter which goes through each index in theta.
R = 12;
w = 2*pi/5;
alpha = 0;
theta = 0:2:360;
for k = 1:length(theta)
ax(k)=(-R)*alpha*sind(theta(k))-(R*(w^2)*cosd(theta(k))) ;
ay(k)=(R)*alpha*cosd(theta(k))-(R*w^2*sind(theta(k))) ;
end
2 commentaires
Chad Greene
le 11 Juin 2016
Here are the plotted results of ax and ay:
plot(ax,ay)
axis equal

Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!