实现B样条曲线平滑离散点,如何求曲率

请教各位,有一组离散点,按照其他帖子用matlab实现了B样条曲线平滑,目前想求其曲率,但写的代码跑出来曲率数值很大。
请问各位有没有好的方法?

%% 计算曲率
xx1=abs(diff(path(:,1))); %path里面存着一组节点坐标
xx2=diff(xx1);

yy1=diff(path(:,2));  %求y一阶导数
yy2=diff(yy1);     %求y的二阶导数
xx2(length(xx1)) = xx2(end); % 使数组维度一致 
yy2(length(yy1)) = yy2(end);
curv= abs(xx1.*yy2-xx2.*yy1) ./ ((xx1.^2+yy1.^2).^(3/2));   %求曲率
curv(length(path(:,1))) = curv(end); 
figure(2)

plot(path(:,1),curv,'-r');

曲率结果如图

img

自己写的B样条曲线如图:

img

这是我用matlab自带spline函数拟合出来的曲线,及曲率

img

img

我参考别人的文献,曲率范围都不超过1,想知道代码是不是有问题

img

计算离散点曲率的方法
https://blog.csdn.net/weixin_35708531/article/details/117185760
https://blog.csdn.net/weixin_41530195/article/details/113859836