最近老师要求作一个线性调频信号的去斜解调,做完了在这里记录一下
发射机所发射的线性解调信号表达式为
我们需要一个信号的模拟回波,用来和本振信号做混频,定义为
去斜的本质是用一时间固定、频率与调频率相同LFM信号作为参考信号,用它与回波作差频处理,所以这里才能用两段相同的LFM信号,只做延时来作为回波就非常的合适,正好可以模拟实际应用中发射机与接收机的状态,做去斜解调的目的也是为了测距,这个从结果我们可以知道。
又由于最基础的雷达原理可知,回波信号的大小与发射机与目标物体的距离有关,具体的值:
其中R表示发射机与目标物体的距离,c为光速,则回波信号可以表达为
注意:这里的发射信号和回波信号应该要加一个门函数框定时宽,但是这段对于之后的处理影响不大,而且我为了看着方便就省略了,严谨来说是要加上的
去斜解调(dechirping)
其实去斜解调就是一种特殊的匹配滤波,匹配滤波实际上就是指滤波器的性能与信号s(t)的特性取得某种一致,使滤波器的输出端的信号瞬时功率与噪声平均功率之比值为最大,增强信号分量而同时减弱噪声分量,也就是增强信号的信噪比。对于雷达信号这种带宽很大的信号,采用去斜解调不仅运算简单,还能大大减少设备的复杂程度,占用更少的逻辑资源,经过去斜解调后的雷达信号不仅有大带宽发射所带来良好的作用距离,还拥有经过脉冲压缩之后良好的距离分辨率,良好的解决了雷达在应用过程中探测距离与距离分辨率之间的矛盾
其运算本质就是将回波与本振信号的共轭相乘,消除全时间与频率一同变化的分量,实现脉冲压缩
具体运算过程如下:
可以看到只剩下了一个有关t的频率分量,其余两项都是相位分量,且都与发射机与目标物体的距离成比例,的乘积量都已经被消去,获得了稳定的频率量
下面给出matlab代码
Tr = 10e-6;%线性调频信号脉宽,发射脉冲时宽10us
B = 8e6; %调频信号带宽8M
K = B/Tr; %调频率8e11
f0 = 1e6; %载频25M
Fs = 10*B; %采样率
Ts = 1/Fs; %采样时间间隔
N = round(Tr/Ts); %采样点数800
t = linspace(-Tr/2,Tr/2,N);
st = exp(1j*(2*pi*f0*t+pi*K*t.^2)); %时域
conj_st=conj(st);%原时域波形的共轭
delay = 5e-6; % 延迟5微秒
delta_t = t-delay;
delayed_pulse = exp(1j*(2*pi*f0*delta_t+pi*K*delta_t.^2)); %模拟的回波信号
demodulated_pulse = delayed_pulse .* conj_st;%延迟后的和本来的共轭进行相乘
figure(1)
subplot(211)
plot(t*1e6, demodulated_pulse);
title('去斜解调后的波形');
xlabel('时间/us');
ylabel('幅度');
%axis ([-Inf Inf -2 2]);
axis auto
spectrum_demodulated_pulse = fft(demodulated_pulse);% 计算去斜解调后的频谱
f_pulse = linspace(-Fs/2, Fs/2, length(st));
subplot(212)
plot(f_pulse/1e6, fftshift(abs(spectrum_demodulated_pulse)));
title('去斜解调后的频谱');
xlabel('频率 (MHz)');
ylabel('幅度');
f_dechirped = (K* delay);
disp(['延迟量为 ' num2str(delay * 1e6) ' 微秒时,去斜解调后的频率分量为 ' num2str(f_dechirped / 1e6) ' MHz']);
和运行结果
去斜解调对于距离的计算
我们如何从计算完的表达式中看出目标与发射机的距离关系呢?我们看到距离分量与
这两个式子的关系,化简之后我们可以直接得到
得到处理后信号的频率就是延时量与调频率的乘积,至此我们就将延时量与频率联系了起来,也可以证明我们得到的确实是单一频率的三角函数信号,上述代码中,我的延时量是5us,调频率是8*10^11,所以最终得到的频率是4Mhz,大大降低了本振信号的频率,这个频率不管载频有多高,只与延时量,带宽与时宽有关
对于雷达信号处理中去斜解调,或者说脉冲压缩,或者说匹配滤波来说,我觉得原理都是一样的,就是通过两个互相关的信号,找到延时量与目标距离的关系,只需知道其一,就可以相互推导。