Azzera filtri
Azzera filtri

Find X for a given Y using interpolation

10 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Dyuman Joshi
Dyuman Joshi il 22 Set 2023
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 Commenti
Dyuman Joshi
Dyuman Joshi il 22 Set 2023
"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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Prodotti


Release

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by