我正在尝试模拟多普勒频移雷达中的噪声滤波。它应该过滤掉相对于雷达移动速度低于25米/秒的物体(接近或远离)。应该有两种方法来避免被雷达发现:如果物体在任何方向上移动,但速度低于25米/秒,或者在任何速度下移动,但垂直于雷达(或更确切地说,在绕着雷达旋转)。在这两种情况下,目标相对于静止雷达的径向速度应该低于25m/s,从而欺骗雷达将其作为噪声过滤掉。我知道物体的位置和速度矢量(2D和3D)。当涉及到数学时,我是一个彻头彻尾的笨蛋,所以我就是想不通。有什么需要帮忙的吗?
编辑:问题格式不正确。我想要获得相对于雷达的真实径向速度,并过滤移动速度超过25 m/s但相对航向使朝向雷达的径向速度小于25 m/s的对象。例如,以30 m/s和垂直于雷达45度的速度移动的对象将被过滤掉,但如果该对象以300 m/s的速度移动,则不会。
发布于 2013-01-23 00:01:38
我不知道任何Lua,但由于这是一个纯粹的数学问题,数学伪代码应该足够了。
假设r是雷达的位置,x是对象的位置,v是对象的速度矢量(以米/秒为单位)。所有这些都是二维或三维矢量,这取决于您是在二维还是三维工作。
速度条件非常简单:只需获取速度矢量v的norm,并将其与25m/s的阈值进行比较。
要确定对象是否在绕着雷达旋转,请计算从雷达到对象的向量,即x-r,并检查它是否垂直于速度向量;您可以通过计算scalar product来实现这一点,当两个向量垂直时,它将变为零。在实践中,您可以使用一个大于零的小阈值来允许两个向量稍微不垂直。
在pseduo-code中,这变成:
if v.norm()<25 or v.scalar_product(x-r)<0.05
Ignore object
end您必须了解如何在Lua中计算norms和scalar products (或者,如果做不到这一点,请按照链接页面中的描述自行计算它们)。
对已编辑问题的回答(关闭速度)
对于修改后的问题,标量积也派上用场。您可以获得闭包速度为
v_closure = v.scalar_product(r-x)/norm(r-x)请注意,结果是有符号的--如果对象正在向雷达移动,则为正;如果对象正在远离雷达,则为负。然后,您将执行噪声过滤检查,如下所示:
if abs(v_closure)<25
Ignore object
end因此,从某种意义上说,这种修改后的测试甚至比原始版本更简单。
发布于 2013-06-19 22:33:17
Martin的回答很好,但这只是一个附带的和可能的简化,考虑到您无论如何都必须计算Cos(Theta),它不是也很容易简化为
v_closure =范数(V)Cos(Theta)
其中Theta是向量(r-x)和v之间的角度
https://stackoverflow.com/questions/14462511
复制相似问题