Finding the first occurance using interp1

6 visualizzazioni (ultimi 30 giorni)
Jason
Jason il 27 Feb 2018
Modificato: Matt J il 27 Feb 2018
Hello. I have some data (red curve) and I'm trying to find the X value at which Y = 0.2.
I have used
Y20 = interp1(Y,X,0.2,'linear')
which works well, but finds the last occurrance.
How can I find the first occurrance (i.e. around x=9)
Thanks

Risposta accettata

Matt J
Matt J il 27 Feb 2018
Modificato: Matt J il 27 Feb 2018
Use only the first two data X,Y data points in the interpolation.
  6 Commenti
Torsten
Torsten il 27 Feb 2018
It could happen that Y is increasing, couldn't it ?
Matt J
Matt J il 27 Feb 2018
Modificato: Matt J il 27 Feb 2018
Not according to the posted figure, but even if it could, I think the extension is an exercise I'll leave for the OP.

Accedi per commentare.

Più risposte (1)

Sean de Wolski
Sean de Wolski il 27 Feb 2018
Modificato: Sean de Wolski il 27 Feb 2018
Use cummax and cummin to find the the first set of points that cross 0.2. Then interp just them.
x = 1:10
y = sin(x)
plot(x,y)
yval = 0.2;
idx = find(cummin(y)<0.2 & cummax(y)>0.2, 1, 'first')
interp1(y([idx-1 idx]), x([idx-1, idx]), 0.2)
  1 Commento
Jason
Jason il 27 Feb 2018
Thankyou for your answer. Im sorry I can't accept both. Matt came first.

Accedi per commentare.

Categorie

Scopri di più su Data Preprocessing in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by