Finding the first occurance using interp1

7 ビュー (過去 30 日間)
Jason
Jason 2018 年 2 月 27 日
編集済み: Matt J 2018 年 2 月 27 日
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

採用された回答

Matt J
Matt J 2018 年 2 月 27 日
編集済み: Matt J 2018 年 2 月 27 日
Use only the first two data X,Y data points in the interpolation.
  6 件のコメント
Torsten
Torsten 2018 年 2 月 27 日
It could happen that Y is increasing, couldn't it ?
Matt J
Matt J 2018 年 2 月 27 日
編集済み: Matt J 2018 年 2 月 27 日
Not according to the posted figure, but even if it could, I think the extension is an exercise I'll leave for the OP.

サインインしてコメントする。

その他の回答 (1 件)

Sean de Wolski
Sean de Wolski 2018 年 2 月 27 日
編集済み: Sean de Wolski 2018 年 2 月 27 日
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 件のコメント
Jason
Jason 2018 年 2 月 27 日
Thankyou for your answer. Im sorry I can't accept both. Matt came first.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by