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

37 views (last 30 days)
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);

Accepted Answer

Matt J
Matt J on 20 Sep 2020
curveLength = sum(vecnorm( diff( [x(:),y(:)] ) ,2,2))
  3 Comments

Sign in to comment.

More Answers (1)

Tamas Rozsa
Tamas Rozsa on 29 Jan 2023
Edited: Tamas Rozsa on 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

Categories

Find more on Curve Fitting Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!