How to get x value for a given y value in a interp1 figure?
Afficher commentaires plus anciens
If I want to find x value for y==0.5, how can I find that? We only have 9 points.

2 commentaires
Dyuman Joshi
le 28 Mar 2024
Use the interp1 function as you have mentioned.
What seems to be the problem?
Refer to its documentation for information regarding accepted syntaxes.
wuwei han
le 28 Mar 2024
Réponse acceptée
Plus de réponses (2)
Star Strider
le 28 Mar 2024
Modifié(e) : Star Strider
le 28 Mar 2024
To get both of them —
vv=[0.190934428093434,0.277000826121106,0.477820361464529,0.703789686451856,1,0.703789686451856,0.477820361464529,0.277000826121106,0.190934428093434];
L = numel(vv)
xv = -40/3/8:10/3/8:40/3/8;
dv = 0.5;
zxi = find(diff(sign(vv - dv)));
for k = 1:numel(zxi)
idxrng = max(1, zxi(k)-1) : min(L,zxi(k)+1);
xp(k) = interp1(vv(idxrng), xv(idxrng), dv);
end
format long
xp
figure
plot(xv, vv, '*-r')
hold on
plot(xp, ones(size(xp))*dv, 'sg', 'MarkerSize', 10)%, 'MarkerFaceColor','g')
plot(xp, ones(size(xp))*dv, '+k', 'MarkerSize',10)
hold off
yline(0.5, '--k')
.
9 commentaires
wuwei han
le 28 Mar 2024
Star Strider
le 28 Mar 2024
As always, my pleasure!
wuwei han
le 28 Mar 2024
Star Strider
le 28 Mar 2024
It is on the red line, and it is at 0.5.
wuwei han
le 28 Mar 2024
wuwei han
le 28 Mar 2024
Star Strider
le 28 Mar 2024
I did not previously see that you had supplied the ‘x’ vector in the plot call. That is now corrected.
wuwei han
le 28 Mar 2024
Star Strider
le 28 Mar 2024
My pleasure!
Hi Wuwei,
You can use the "interp1" function to find the values from the interpolation.
Given below is an example:
x_ref = [-1.7 -1.2 -0.7 -0.4 0 0.4 0.7 1.2 1.7];
y_ref = [0.2 0.3 0.5 0.7 1 0.7 0.5 0.3 0.2];
x_test = [0.5];
y_test = interp1(x_ref, y_ref, x_test)
plot(x_ref, y_ref, 'r', x_test, y_test, 'ko')
Since "x" is not a function of "y" here (one value of "y" leads to multiple values of "x"), you cannot directly use "interp1" for "x" vs "y". Either use half of the points in that case, or use some other techniques to make "x" a function of "y".
You can refer to the following documentation of the interp1 function for more details: https://www.mathworks.com/help/matlab/ref/interp1.html
Hope this helps!
1 commentaire
wuwei han
le 28 Mar 2024
Catégories
En savoir plus sur Data Distribution Plots dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


