Finding the first occurance using interp1

6 vues (au cours des 30 derniers jours)
Jason
Jason le 27 Fév 2018
Modifié(e) : Matt J le 27 Fév 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

Réponse acceptée

Matt J
Matt J le 27 Fév 2018
Modifié(e) : Matt J le 27 Fév 2018
Use only the first two data X,Y data points in the interpolation.
  6 commentaires
Torsten
Torsten le 27 Fév 2018
It could happen that Y is increasing, couldn't it ?
Matt J
Matt J le 27 Fév 2018
Modifié(e) : Matt J le 27 Fév 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.

Connectez-vous pour commenter.

Plus de réponses (1)

Sean de Wolski
Sean de Wolski le 27 Fév 2018
Modifié(e) : Sean de Wolski le 27 Fév 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 commentaire
Jason
Jason le 27 Fév 2018
Thankyou for your answer. Im sorry I can't accept both. Matt came first.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Preprocessing 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!

Translated by