Find X for a given Y using interpolation
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
Hi all,
Suppose
x = [5 8 9 11 12.5 17];
y = [2 3.5 4.0 5.3 6.7 8.2];
Now I want to find the corresponding value for x where y = 4.8 using interpolation. I was wondering if there is any function in MATLAB which can do this calculation.
採用された回答
Dyuman Joshi
2023 年 9 月 22 日
x and y are not mapped one-to-one for interpolation, there is an element missing in y.
interp1 is what you are looking for.
8 件のコメント
Roohollah
2023 年 9 月 22 日
Thanks for reminding me for the issue.
What I need is a function to input x,y and y = 4.8. Then it returns the corresponding x for y = 4.8.
Roohollah
2023 年 9 月 22 日
Many thanks.
interp1 worked well.
Dyuman Joshi
2023 年 9 月 22 日
編集済み: Dyuman Joshi
2023 年 9 月 22 日
Look into the documentation (the link I attached above) for more info.
x = [5 8 9 11 12.5 17];
y = [2 3.5 4.0 5.3 6.7 8.2];
x0 = interp1(y,x,4.8)
x0 = 10.2308
Roohollah
2023 年 9 月 22 日
Seems to be wrong. x0 must be between 11 and 12.5.
Dyuman Joshi
2023 年 9 月 22 日
As y0 is between 4 and 5.3, so correspondingly, x0 should be between 9 and 11, which it is.
Roohollah
2023 年 9 月 22 日
Yes, you are right.
As the last question. I am working on my real data. This is the code I use;
delta40 = interp1(F,delta,F40);
And I get the following error message:
Error using matlab.internal.math.interp1
Sample points must be unique.
Error in interp1 (line 188)
VqLite = matlab.internal.math.interp1(X,V,method,method,Xqcol);
Error in Test (line 40)
F40 = 0.4 * Fmax; delta40 = interp1(F,delta,F40);
What does "Sample points must be unique." mean?
"What does "Sample points must be unique." mean?"
Let's introduce a repeating value in the data set -
y = [2 2 3.5 4.0 5.3 6.7 8.2 ];
x = [5 6.5 8 9 11 12.5 17 ];
Now if you want to interpolate for y between 2 and 3.5, say 3, which x values should be used for interpolation?
5-8 or 6.5-8? Interpolation for such a case does not make sense.
So, we have to use non-repeating values - a.k.a unique values in MATLAB terminology. That's what the error is stating.
Now, as 6.5-8 is a subset of the range 5-8 for the same value of 2, we can eliminate it from our data and then interpolate -
%Get unique values of the array in sorted manner
[y,idx] = unique(y)
y = 1×6
2.0000 3.5000 4.0000 5.3000 6.7000 8.2000
idx = 6×1
1
3
4
5
6
7
x = x(idx)
x = 1×6
5.0000 8.0000 9.0000 11.0000 12.5000 17.0000
interp1(y,x,3)
ans = 7
Note that this is just one of the possible cases of data with repeating values.
Roohollah
2023 年 9 月 22 日
Many thanks
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Interpolation についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
