I want to find inflections point for point data input?
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Vishal Rajpurohit
le 15 Juin 2018
Commenté : Vishal Rajpurohit
le 18 Juin 2018
i have input points
x=[0 1 2 3 4 5 6 7 8 9 10]
y=[5.0000 6.0000 8.0000 9.0000 8.5000 8.0000 7.0000 6.5000 7.0000 8.0000 10.0000]
x1=0:0.001:10;
y1=interp1(x,y,x1,'spline');
plot(x1,y1);
i want to find inflection points on that curve?
explain with full code please.
0 commentaires
Réponse acceptée
Guillaume
le 15 Juin 2018
The inflections points are when the sign of the difference of your y changes. So, whichever way you obtain your y points (as is or using linear or spline interpolation), the indices of the inflection points are:
inflection_idx = find(diff(sign(diff(y)))) + 1; %+1 to compensate for the index shift caused by the double diff
Note that linear interpolation won't change the location of the inflection points, it'll still be at y=9 and y=6.5, and even with spline interpolation it's not going to change much.
7 commentaires
Guillaume
le 18 Juin 2018
Yes, not sure what I was thinking, it's the 2nd derivative, so a double diff:
inflection_idx = find(diff(sign(diff(diff(y1))))) + 1;
It may be more accurate to use gradient instead of diff to calculate the 2nd derivate:
inflection_idx = find(diff(sign(gradient(gradient(y1)))));
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Spline Postprocessing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!