【发布时间】:2021-08-12 21:42:16
【问题描述】:
我正在尝试使用 Matlab 计算使用投影到本地笛卡尔平面的 GPS 数据获得的轨迹的“曲率半径”信号。 第 n 点上的信号值是与该点上的轨迹相切的密切圆之一。 按照惯例,与左转相关的信号幅度必须为负,反之亦然。
使用具有适当功能的轨迹作为图形,我正在构建“符号”信号,评估密切圆中心的 y 坐标之间的数值差异:
for i=1:length(yCenter) -1
aux=Y_m(closestIndex_head:closestIndex_tail );
if yCenter(i) - aux(i) > 0
sign(i)=-1;
else
sign(i)=+1;
end
end
- yCenter 包含与轨迹的每个点相关的所有密切圆的 x 坐标;
- Y_m 包含轨迹中每个点的 y 坐标。
只要轨迹图是一个适当的函数,上述简单方法就可以工作(对于每个 x,只有一个 y)。
我正在研究的轨迹是这样的:
符号信号出现异常:
标志似乎在一圈内改变。
我尝试使用切线向量和轨迹之间的角度的正弦、角度的切线的符号和其他类似的东西来纠正符号,但我仍然在查看一些异常情况:
我很确定这些异常来自于图形不是一个正确的函数并且解决方案取决于切向量的角度,但仍然缺少一些东西。
任何建议将不胜感激, 谢谢。
亚历山德罗
【问题讨论】:
-
如果你交换 x 和 y,你的图会突然变成一个“正确的函数”
-
当然,但我希望我的脚本能够计算出我所链接的轨迹,而无需交换 x 和 y。
-
你可能需要minimal reproducible example然后
-
最好计算曲率半径的倒数,然后当你直行或进入拐点时,曲率为零,而不是无限曲率半径。
标签: matlab signal-processing curve