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

37 次查看(过去 30 天)
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);

采纳的回答

Matt J
Matt J 2020-9-20
curveLength = sum(vecnorm( diff( [x(:),y(:)] ) ,2,2))
  3 个评论

请先登录,再进行评论。

更多回答(1 个)

Tamas Rozsa
Tamas Rozsa 2023-1-29
编辑:Tamas Rozsa 2023-1-30
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

类别

Help CenterFile Exchange 中查找有关 Curve Fitting Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by