错误提示:
原因:
这个错误表明 segment_lengths
的维度和 0
不一致。在 MATLAB 中,有时,diff
函数的输出可能是行向量,而segment_lengths
应该是一个列向量才能与 0
正确连接。
解决方法:
使用转置操作 .'
将 segment_lengths
强制转换为列向量,从而保证 [0; segment_lengths]
的维度一致。
% 计算每个相邻点之间的距离(弧长段),确保结果为列向量
segment_lengths = sqrt((diff(xunizhuang_x).^2 + diff(xunizhuang_y).^2)).'; %使用转置操作 .'
% 计算累积弧长 s
s = cumsum([0; segment_lengths]);
也有一种原因是:使用了diff 操作,它返回的数组长度比原数组短1,因此,一阶导数 dx_ds 和 dy_ds 的长度比原数据少 1,二阶导数 ddx_ds2 和 ddy_ds2 比一阶导数少 1,需要使用 1:end-1 来对齐长度。