本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!
大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。
之前分享的文章:雷达仿真 | FMCW TDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)当中,存在几个小问题(bug),具体如下:
第十节:多普勒补偿”部分的generate CompCoff函数中,delta是否无需除以txNum,参考1642汽车雷达速度扩展算法文档里的公式,并且改完后仿真的角度估计误差更小。
修改前,修改后的代码对比如下图所示:
% function compCoffVec = generateCompCoff(parameter,speedBin)
%
% compCoffVec = zeros(parameter.virtualAntenna,1);
% txNum = length(parameter.txAntenna);
% rxNum = length(parameter.rxAntenna);
% phi = 2 * pi * (speedBin - parameter.dopplerBin/2 - 1) / parameter.dopplerBin;
% delta = phi / txNum;
% for txId = 1:txNum
% for rxId = 1:rxNum
% compCoffVec((txId-1) * rxNum + rxId) = exp(-1i * (txId-1) * delta);
% end
% end
% end
function compCoffVec = generateCompCoff(parameter,speedBin)
compCoffVec = zeros(parameter.virtualAntenna,1);
txNum = length(parameter.txAntenna);
rxNum = length(parameter.rxAntenna);
phi = 2 * pi * (speedBin - parameter.dopplerBin/2 - 1) / parameter.dopplerBin;
for txId = 1:txNum
for rxId = 1:rxNum
compCoffVec((txId-1) * rxNum + rxId) = exp(-1i * (txId-1) * phi);
end
end
end
修改前,修改后的测角结果如下图所示:
幸亏有盆友指出来,否则由于我的疏忽给大家带来了不必要的麻烦,非常感谢该读者。本质上,我们的雷达仿真都是属于“无偏估计”,因此实际的计算结果于理论的结果误差非常小,基于这一点,我们就能够判断我们的仿真结果是不是存在问题。
另外还有一个读者反馈的问题,说发射信号模型中,有一个地方不好理解。代码如下:
St = exp((1i*2*pi)*(centerFreq*(t+((txNum-1)*chirps + chirpId)*Tr)+slope/2*t.^2)); %发射信号
解释:改为采用下面这种方式,比较简单,上述方式是不太正确的。 初始的定值,其实不需要加。反正每一个chirp都是混频之后存入DataCube,初始值按照chirp个数变化即可。
St = exp((1i*2*pi)*(centerFreq*(t+(chirpId-1)*Tr)+slope/2*t.^2)); %发射信号
第三个问题是根据回波公式里面并没有另外考虑多普勒频率出现 ,但是代码里却增加了:
fd = 2 * targetSpeed / lambda;
wx = ((txId-1) * rxNum + rxId) / lambda * dx * sind(targetAngle);
Sr = 10*exp((1i*2*pi)*((centerFreq-fd)*(t-tau+((txNum-1)*chirps + chirpId) * Tr)+slope/2*(t-tau).^2 + wx));
其实回波信号模型里,早就暗含了多普勒频率,看这里:
fd = 2 * targetSpeed / lambda;