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

34 Ansichten (letzte 30 Tage)
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);

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Tamas Rozsa
Tamas Rozsa am 29 Jan. 2023
Bearbeitet: Tamas Rozsa am 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

Kategorien

Mehr zu Curve Fitting Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by