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

55 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

Community Treasure Hunt

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

Start Hunting!

Translated by