简述
最近在学习雷达对抗原理过程中,对瞬时测频技术有了初步认识。同时进行了简单仿真,对于理解不足之处欢迎指出。
学习引用资料
仿真程序介绍
大框架
仿真程序按顺序依次实现功能为:信号生成-信号延迟-信号相位差计算-相位修正-频率计算。
信号生成
程序信号生成部分,生成两个回波信号(5MHz载频的5M正FLM脉冲信号,6MHz载频的点频脉冲信号)以及指定信噪比的噪声信号。并按早时间排布两个回波信号后与噪声叠加,行程需要的回波模拟信号数据。
信号延迟
在实际应用中根据工程实现会采用采样时钟的整数倍进行选择,针对学习程序中使用延迟1个采样周期(采样频率10MHz)进行。(可以自行拓展验证哟)
信号相位差计算
分别计算信号和延迟后信号相位(使用angle函数),再进行作差即可。【程序中直接使用diff函数,实现1个时钟采样作差操作。】
相位差修正
由于信号是周期变换的,会存在本采样周期采样信号信号相比上个采样周期采样数据相位刚好跨2pi相位的情况出现,从而导致测频结果出现镜像测频频率。因此对该种情况相位差进行修正。
根据信号延迟计算频率
仿真中采样率为10MHz,延迟为1个周期,根据公式按照单点相位差依次推算每个时刻信号载频即可。
仿真程序
clc
close all
clear all
%瞬时测频法仿真 (比相法测频技术仿真验证)
%2023-8-25-JIANG
%%
%信号生成
FS=10e6;
F0=5e6;
PW=30e-6;%S
BW=5e6;%Hz
k=BW/PW;
C=299792458;
t=0:1/FS:PW-1/FS
% Sig=rectpuls(t-PW/2,PW).*exp(1j*pi*k*(t-PW/2).^2);
Sig0=rectpuls(t-PW/2,PW).*exp(1j*2*pi*(F0*(t-PW/2)+(k/2*(t-PW/2).^2)));
F0=6e6;
PW1=20e-6;%S
BW1=0e6;%Hz
k1=-BW1/PW1;
t=0:1/FS:PW1-1/FS
Sig1=rectpuls(t-PW1/2,PW1).*exp(1j*2*pi*(F0*(t-PW1/2)+(k1/2*(t-PW1/2).^2)));
% figure()
% plot(real(Sig0))
% figure()
% plot(imag(Sig))
Sig_all=zeros(1,1000);
Sig_all(1,300:300+PW*FS-1)=Sig0;
Sig_all(1,700:700+PW1*FS-1)=Sig1;
%%
%噪声生成
SNR=20;
Noise_V=1/(10^(SNR/20));
Noise=Noise_V*complex(rand(1,length(Sig_all)),rand(1,length(Sig_all)));
%%
%信号合成
Sig_all=Sig_all+Noise;
xx_Sig_all=[1:1:length(Sig_all)]/FS;
figure()
plot(xx_Sig_all,real(Sig_all))
title('模拟回波信号+噪声信号')
xlabel('时间/s')
ylabel('信号幅度/V')
grid on
Sig_all_angle=angle(Sig_all);
% figure()
% plot(Sig_all_angle)
% title('angel-Q')
%%
%延迟1个采样周期数据进行相位差计算,模拟延迟相关
Sig_all_angle_diff=diff(Sig_all_angle);
% figure()
% plot(Sig_all_angle_diff)
% title('angeldiff')
for i=1:length(Sig_all_angle_diff)
if Sig_all_angle_diff(1,i)<0
fai=2*pi
else
fai=0
end
Sig_all_angle_diff(i)=Sig_all_angle_diff(i)+fai
end
xx_Sig_all_angle_diff=[1:1:length(Sig_all_angle_diff)]/FS;
figure()
plot(xx_Sig_all_angle_diff,Sig_all_angle_diff)
title('修正后相位差值')
xlabel('时间/s')
ylabel('相位/rad')
grid on
%%
%推算对应瞬时频率
f_out=Sig_all_angle_diff*FS/(2*pi);
figure()
xx_f_out=[1:1:length(f_out)]/FS;
plot(xx_f_out,real(f_out))
title('实时测频结果')
xlabel('时间/s')
ylabel('频率/Hz')
grid on