Error iterating with fractions
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Andrew Poissant
le 4 Avr 2017
Modifié(e) : Stephen23
le 5 Avr 2017
I want to do something pretty simple but am not sure how to do because I can't iterate using fractions. What I want is to solve for x(i), y(i), and z(i). All three are dependent on the previous value. I have attached an attempt to solve this below but naturally I can't iterate using fractions. My tf value is 3.5272 so naturally I want more than 3 or 4 iterations. Any ideas? I just want to solve the three equations for a time step of 0.1 and eventually plot it. I get an error in the line where I define x(i) saying "subscript must be either real positive integers or logicals."
theta = 50; % deg
phi = 0; % deg
u = 16; % m/s
u_x = u*cosd(theta)*cosd(phi);
u_y = u*sind(theta)*cosd(phi);
u_z = u*sind(phi);
x(1) = 0;
y(1) = 0;
z(1) = 60;
tf = 3.5272;
for i = 1.1:0.1:roundn(tf,-1)
x(i) = u_x*i + 0.5*ax*i^2 + x(i-0.1);
y(i) = u_y*i + 0.5*ay*i^2 + y(i-0.1);
z(i) = -u_z*i + 0.5*az*i^2 + z(i-0.1);
end
0 commentaires
Réponse acceptée
Stephen23
le 4 Avr 2017
Modifié(e) : Stephen23
le 5 Avr 2017
Fractions cannot be used as indices. Put the fractional values in a vector and make the indices integers:
vec = 1.1:0.1:roundn(tf,-1);
for k = 2:numel(vec)
val = vec(k);
x(k) = +u_x*val + 0.5*ax*val^2 + x(k-1);
y(k) = +u_y*val + 0.5*ay*val^2 + y(k-1);
z(k) = -u_z*val + 0.5*az*val^2 + z(k-1);
end
[edited based on comments below]
4 commentaires
Les Beckham
le 4 Avr 2017
I suspect that is what Stephen intended. You will also need to change the for loop to start at 2 instead of 1 (so you don't try to index into x with a zero).
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Elementary Math 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!