i'm trying to disply ht vs time in a plot, but the graph is ending up blank, what am i doing wrong.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I'm trying to get this to work but im sure im just missing something fundamental. Here is my code:
function ht=find_ht(t)
if t>=0;
ht=-9.8/2*(t^2)+125*t+500;
else
ht='error';
end
plot(t,ht)
ax.XLim = [0 30]
ax.XTick= [0:0.5:30]
0 commentaires
Réponse acceptée
dpb
le 30 Sep 2016
Modifié(e) : dpb
le 30 Sep 2016
Several issues...first, how are you trying to use the function? If you call it in a loop over some time interval with individual values for t, it'll work but not do what you're wanting; it'll plot the one point only. Since default there isn't a marker, it's not surprising you may not even see that single pixel set. If you were to change to
plot(t,ht,'*')
then you'd see that point be redrawn (altho maybe too fast to see much other than the last one).
"The Matlab way" would be to pass in the vector of t and use the vectorized functions in Matlab to compute it all in "one swell foop" (to use a spoonerism). Then, you'll need to use the "dot" operators for the mathematical operations to operate on an element-by-element basis. See the documentation on 'Arithmetic Operators' for the full list but you'll need .^ here. ./ and .* won't hurt and would be good practice but aren't required as a constant can multiply any sized object by default.
0 commentaires
Plus de réponses (1)
Star Strider
le 30 Sep 2016
Try this:
function ht=find_ht(t)
if t>=0;
ht=-9.8/2*(t.^2)+125*t+500;
else
ht='error';
end
end
t = [0:0.5:30];
plot(t,find_ht(t))
ax.XLim = [0 30];
ax.XTick= [0:0.5:30];
0 commentaires
Voir également
Catégories
En savoir plus sur Annotations 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!