Find value of x, from max y (graph)
Afficher commentaires plus anciens
figure(2);
vel = diff(y)./diff(x);
plot(x(1:end-1), vel)
display(max(findpeaks(vel)))
x(max(findpeaks(vel)));
Trying to find the value of x corresponding to the maximum value of y, for this velocity vs time graph.
displays error due to logical or integer access.
Réponses (2)
Mischa Kim
le 17 Oct 2014
Andrew, check out
x = 0:0.1:6;
y = sin(x + 0.5);
vel = diff(y)./diff(x);
plot(x(1:end-1), vel,x(vel == max(vel)),max(vel),'dr')
Michael Haderlein
le 17 Oct 2014
Modifié(e) : Michael Haderlein
le 17 Oct 2014
I'd actually prefer the following:
...
vel = diff(y)./diff(x);
[maxvel,ind]=max(vel);
plot(x(1:end-1),vel,x(ind),maxvel,'or')
If you have a large number of velocities, this one here will be faster. For a small number, it just doesn't matter.
5 commentaires
Andrew
le 17 Oct 2014
Michael Haderlein
le 17 Oct 2014
You can just print it in the command window, e.g.
>> x(ind)
ans =
1.1000
Andrew
le 17 Oct 2014
Andrew
le 17 Oct 2014
Michael Haderlein
le 17 Oct 2014
What do you mean? You can, for instance, use the Data Cursor tool in the menu toolbar. Or you use the handles (plot_handles=get(gca,'children');) of the plots and then extract the x and the y data of the plots (x=get(plot_handles(1),'xdata');).
Catégories
En savoir plus sur Line Plots dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!