代码复现如下:
Matlab
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)); %时域匹配滤波器表达式
%在信号中加入高斯噪声的两种方式
st_noise = awgn(st,-2.5,'measured');
%st_noise = st+0.75*randn(1,N);
s_out_noise = conv(st_noise,ht);
s_out_noise_nor = s_out_noise/max(s_out_noise);
s_out_noise_log = 20*log10(abs(s_out_noise_nor)/max(abs(s_out_noise_nor))+eps);
%绘图
figure
subplot(221),plot(t*1e+6,real(st_noise))
subplot(222),plot(t_out*1e+6,s_out_noise_log),axis([-1 1,-30 5])
subplot(223),plot(t_out*1e+6,real(s_out_noise_nor)),axis([-3 3,-0.5 1.5])
subplot(224),plot(t_out*1e+6,angle(s_out_noise_nor)),axis([-1 1,-5 5])
1. st_noise = awgn(st,-2.5,'measured');
y = awgn(x,snr)将白高斯噪声添加到向量信号x中。标量snr指定了每一个采样点信号与噪声的比率,单位为dB。如果x是复数的,awgn将会添加复数噪声。这个语法假设x的能量是0dBW。 y = awgn(x,snr,'measured')和y = awgn(x,snr)是相同的,除了agwn在添加噪声之前测量了x的能量。