计算径向速度。

我正在尝试模拟多普勒雷达中的噪声过滤。它应该过滤相对于雷达移动速度低于25 m/s(向前或向后移动)的物体。有两种方法可以避免雷达检测:如果物体向任何方向移动但速度低于25 m/s或者物体垂直于(或者说是绕圈)雷达运动,两种情况下,物体的径向速度相对于静止的雷达应该低于25 m/s,这样就可以愚弄雷达将其过滤为噪音。我知道物体的位置和速度矢量(2D和3D)。当涉及到数学时,我完全是个笨蛋,因此无法理解。请帮帮我?

编辑:问题有误。我想获取相对于雷达的真实径向速度,并过滤掉移动速度大于25 m/s但相对速度朝向雷达的情况。一个例子可能是一个以30 m/s速度向45度垂直于雷达移动的物体会被过滤掉,但如果这个物体以300 m/s的速度移动就不会被过滤。

点赞
用户134877
用户134877

我不懂 Lua,但既然这是一个纯数学问题,数学伪代码应该就足够了。

r 为雷达的位置,x 为物体的位置,v 为物体的速度向量(以米每秒为单位)。所有这些向量都是二维或三维的,取决于你是在二维还是三维中工作。

速度条件非常容易:只需取速度向量 v范数,并将其与 25 米/秒的阈值进行比较即可。

要找出物体是否围绕雷达旋转,请计算从雷达到物体的向量,即 x-r,并检查它是否垂直于速度向量;你可以通过计算 数量积 来完成这一点,当两个向量垂直时,数量积为零。在实践中,您可以使用大于零的小阈值,以允许这两个向量略微不垂直。

在伪代码中,它变成了:

if v.norm()<25 or v.scalar_product(x-r)<0.05
    Ignore object
end

您将需要找出如何在 Lua 中计算 范数数量积(或者,如果失败,按链接页面中描述的方式自己计算它们)。

编辑的问题的答案(闭合速度)

数量积对于您修改后的问题也非常有用。你可以通过以下方式获得闭合速度

v_closure = v.scalar_product(r-x)/norm(r-x)

请注意,结果是有符号的——如果物体向雷达移动,则为正,如果物体远离雷达,则为负。然后,您将像这样进行噪声过滤检查:

if abs(v_closure)<25
    Ignore object
end

因此,在某种程度上,这个修改后的测试甚至比原始版本更简单。

2013-01-22 16:01:38
用户88888888
用户88888888

伟大的答案,马丁,不过另外一个可能简化的方法,考虑到你必须计算 cos(theta),是否可以简化为

v_closure = norm(v)Cos(Theta)

其中Theta是(r-x)和v之间的角度。

2013-06-19 14:33:17