我正在尝试模拟多普勒频移雷达中的噪声过滤。它应该过滤掉相对于雷达移动速度低于 25 m/s 的物体(接近或远离)。应该有两种避免雷达检测的方法:如果物体以低于 25 m/s 的速度向任何方向移动,或者以任何速度移动但垂直于(或更确切地说,环绕)雷达。在这两种情况下,物体相对于静止雷达的径向速度应低于 25 m/s,从而欺骗雷达将其作为噪声滤除。我知道物体的位置和速度矢量(2D 和 3D)。说到数学,我完全是个白痴,所以我无法理解这个问题。有什么帮助吗?
编辑:错误的问题。我想获得相对于雷达的真实径向速度,并过滤移动速度超过 25 m/s 但相对航向会使朝向雷达的径向速度小于 25 m/s 的物体。一个例子可能是一个物体以 30 m/s 的速度移动并且与雷达成 45 度角会被过滤掉,但如果物体以 300 m/s 的速度移动则不会。
最佳答案
我不懂任何 Lua,但由于这是一个纯数学问题,数学伪代码应该足够了。
设r
是雷达的位置,x
是物体的位置,v
是物体的速度矢量(在单位米每秒)。所有这些都是二维或三维向量,具体取决于您是在二维还是三维中工作。
速度条件非常简单:只需取 norm速度矢量 v
并将其与您的阈值 25 m/s 进行比较。
要判断物体是否在雷达周围,计算从雷达到物体的矢量,即x-r
,并检查它是否垂直于速度矢量;你通过计算 scalar product 来做到这一点,当两个向量垂直时变为零。在实践中,您会使用一个大于零的小阈值来允许两个向量稍微不垂直。
在伪代码中,这变成了:
if v.norm()<25 or v.scalar_product(x-r)<0.05
Ignore object
end
您必须了解如何计算 norms和 scalar products在 Lua 中(或者,如果失败,请按照链接页面中的描述自行计算)。
已编辑问题的答案(关闭速度)
标量积对于您修改后的问题也很有用。您获得闭合速度为
v_closure = v.scalar_product(r-x)/norm(r-x)
请注意,结果是带符号的——如果物体正向雷达移动,则为正,如果远离雷达,则为负。然后,您将像这样进行噪声过滤检查:
if abs(v_closure)<25
Ignore object
end
所以从某种意义上说,这个修改后的测试比原来的版本更简单。
关于math - 计算径向速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462511/