Problem with answer of interp1
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi
I am trying to use interp1 and i keep getting a WRONG answer i was hoping you could help me find the bug
P_vect = 6.1201 6.12 6.232 6.28 4.12 3.32
P = 4.747
Y_vect = 3000 3500 4500 5000 5500 5800
What is Y?
Y=interp1(P_vect, Y_vect, P)
matlab gives me 4873 when the answer should be 5354
thanks
3 Kommentare
Walter Roberson
am 5 Jun. 2013
It is not between the 4th and 5th values once you have sorted Y_vect according to P_vect
Antworten (3)
Walter Roberson
am 5 Jun. 2013
interp1() does not appear to define the behavior when the x coefficients are not monotonic.
1 Kommentar
Jan
am 5 Jun. 2013
Bearbeitet: Jan
am 5 Jun. 2013
[EDITED] The fact that INTERP1 calls HISTC is interesting, but does not matter the problem. But the call of SORT for the x-values clears, that not monotonic inputs are handled correctly.
Therefore I think Matlab's interpolation is correct, and assumptions of the OP contain a mistake.
Azzi Abdelmalek
am 5 Jun. 2013
Bearbeitet: Azzi Abdelmalek
am 5 Jun. 2013
Let us sort your vector
[P1,idx]=sort(P_vect )
Y1=Y_vect(idx)
Y=interp1(P1, Y1, P)
% in this case P is between the second(4.12) and the third (6.12) which correspond to value between 5500 and 3500
1 Kommentar
Jan
am 5 Jun. 2013
Bearbeitet: Jan
am 5 Jun. 2013
I get 4873 also, when I calculate this manually. So I assume Matlab is correct and your assumption is not.
The relevant data are:
x = [4.12, 6.12]
y = [5500, 3500]
delta_x = 2.0
delta_y = -2000
z = 4.747;
result = y(1) + (delta_y / delta_x) * (z - x(1))
= 5500 - 1000 * 0.637
= 4873
0 Kommentare
Siehe auch
Kategorien
Mehr zu Interpolation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!