代码复现如下:
clc
clear all
close all
%参数设置
TBP = 100; %时间带宽积
T = 10e-6; %脉冲持续时间
%参数计算
B = TBP/T; %信号带宽
K = B/T; %信号调频频率
alpha_os = 8; %过采样率
F = alpha_os*B; %采样率
N = 2*ceil(F*T/2); %采样点数
dt = T/N; %采样时间间隔
df = F/N; %采样频率间隔
%变量设置
t = -T/2:dt:T/2-dt; %时间变量
f = -F/2:df:F/2-df; %频率变量
t_out = linspace(2*t(1),2*t(end),2*length(t)-1); %循环卷积后的信号长度
%信号表达
st = exp(1j*pi*K*t.^2); %chirp信号复数表达式
ht = conj(fliplr(st)); %时域匹配滤波器表达式
s_out = conv(st,ht); %匹配滤波器输出信号表达式
s_out_nor = s_out/max(s_out); %归一化
s_out_log = 20*log10(abs(s_out)/max(abs(s_out))+eps); %dB
%绘图
figure
subplot(221),plot(t*1e+6,real(st))
axis([-4 4,-1.2 1.2])
subplot(222),plot(t_out*1e+6,s_out_log)
axis([-1 1,-30 5])
subplot(223),plot(t_out*1e+6,real(s_out_nor))
axis([-4 4,-0.3 1.3])
subplot(224),plot(t_out*1e+6,abs(angle(s_out_nor)))
axis([-1 1,-5,5])