随机信号通过带通滤波器
题目描述:
信号为两个正弦信号之和,一个振幅为1,频率为60Hz,另一个振幅为0.5,频率为40Hz;加性噪声是均值为0,方差为4的高斯白噪声,一起调制到9.5kHz的载波上,经过带宽为200Hz、中心频率为9.5kHz的带通系统,求输出信号的功率谱估计。采样频率取20kHz,滤波器阶数选200。
题目分析:仿真思想非常容易理解,废话不多说,直接上代码,不懂的部分请看代码注释:
fs=20000; %采样频率
f0=9500; %中心频率
N=50000; %仿真点数
deltf=200; %带宽
M=200; %滤波器阶数
f1=60; %双音信号的频率
f2=40;
t=0:1/fs:(N-1)/fs; %时间序列
x0=sin(2*pi*f1*t)+0.5*sin(2*pi*f2*t);%原始信号
x=x0+random('norm',0,2,1,N);%原始信号叠加高斯噪声
xt=x.*cos(2*pi*f0*t); %调制
f1=f0*2/fs;
df1=deltf/fs;
ht=fir1(M,[f1-df1,f1+df1]);%加带通滤波器
X=conv(xt,ht); %经过滤波器之后的输出
t=0:1/fs:(N+M-1)/fs;
Nt=X.*cos(2*pi*f0*t); %解调
h1=fir1(M,deltf/fs); %加低通滤波器
N1=N+M;
Hw=fft(h1,N1);
Ntw=fft(Nt,N1);
RXw=(abs(fft(X,N1))).^2/N1; %解调前功率谱密度
RYw=(abs(Ntw.*Hw)).^2/N1; %解调后功率谱密度
maxw=max(max(RXw),max(RYw));
RXw=10*log10(RXw/maxw+0.001);%归一化解调前功率谱密度
RYw=10*log10(RYw/maxw+0.001);%归一化解调后功率谱密度
f=fs/N1:fs/N1:fs/2;
subplot(121); %对比功率谱密度变化
plot(f,RXw(1:N1/2));
axis([9100 9900 -30 0]);
title('spectrum density');
xlabel('frequency/Hz');ylabel('Amplitude/dB');
subplot(122);
plot(f,RYw(1:N1/2));
axis([0 200 -30 0]);
title('spectrum density after demodulation')
xlabel('frequency/Hz');ylabel('Amplitude/dB');
仿真结果如下: