Find value of x, from max y (graph)

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.

Antworten (2)

Mischa Kim
Mischa Kim am 17 Okt. 2014

0 Stimmen

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
Michael Haderlein am 17 Okt. 2014
Bearbeitet: Michael Haderlein am 17 Okt. 2014

0 Stimmen

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 Kommentare

Andrew
Andrew am 17 Okt. 2014
displays the circle, but not displaying the x value still
You can just print it in the command window, e.g.
>> x(ind)
ans =
1.1000
Andrew
Andrew am 17 Okt. 2014
thank you very much
Andrew
Andrew am 17 Okt. 2014
in addition, if just have a graph and i wanted to find the x value from a y value, how would i do it ?
Michael Haderlein
Michael Haderlein am 17 Okt. 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');).

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Line Plots finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 17 Okt. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by