How to find the length of a curve from a list of points using different length scales?

30 vues (au cours des 30 derniers jours)
I want to find the length of a curve from a list of points using different length scales. The smaller the length scale, the more accurate is the result. I want to show this thing by writing a code. Starting from the sine curve will be enough.
x=(0:1:360)*pi/180;
y=sin(x);
plot(x,y);

Réponse acceptée

Matt J
Matt J le 20 Sep 2020
curveLength = sum(vecnorm( diff( [x(:),y(:)] ) ,2,2))
  3 commentaires
Matt J
Matt J le 19 Jan 2022
If so, please Accept-click the answer.

Connectez-vous pour commenter.

Plus de réponses (1)

Tamas Rozsa
Tamas Rozsa le 29 Jan 2023
Modifié(e) : Tamas Rozsa le 30 Jan 2023
Based on https://www.mathworks.com/matlabcentral/answers/1787410-how-can-i-calculate-the-length-of-curve, you may also calculate a more detailed (and in some cases more accurate) result, by utilizing gradient() instead of diff(), and/or cumsum() instead of sum(), depending on your exact use-case:
dX = gradient(X);
dY = gradient(Y);
% option 1
Len = cumsum(hypot(dX,dY)) % if sublengths of all segments also needed
% option 2
Len = sum(hypot(dX,dY)) % if only total length needed

Catégories

En savoir plus sur Curve Fitting Toolbox 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!

Translated by