您的当前位置:首页正文

FIR数字滤波器设计与软件实现实验

2020-04-24 来源:我们爱旅游
实验三:FIR数字滤波器设计与软件实现

1、 实验目的

(1)掌握用窗函数法设计FIR数字滤波器的原理和方法

(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法 (3)掌握FIR滤波器的快速卷积实现原理

(4)学会调用MATLAB函数设计与实现FIR滤波器

2、 实验步骤及内容

(1) 认真复习第七章中用窗函数法和等波纹最佳逼近方法设计FIR数字滤波

器的原理;

(2) 调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其

频谱,如图10.5.1所示。

(a)信号加噪声波形10x(t)0-1000.020.040.060.080.1t/s0.120.140.160.180.2(b)信号加噪声的频谱1幅度0.50050100150200250f/Hz300350400450500

(3) 请设计低通滤波器,从高频噪声中提取xt中的单频抑制载波调幅信号,

要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。观察xt的频谱,确定滤波器指标参数。

(4) 根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB

函数firl设计一个FIR低通滤波器。并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。

(5) 重复(3),滤波器指标不变,但改用等纹波最佳逼近法设计FIR滤波器,

调用MATLAB函数remezord和remez设计FIR数字滤波器。比较两种设计方法设计的滤波器阶数。

3、 程序清单

clc; clear; NN=1000; fs1=1000; T=1/fs1;

t=0:T:(NN-1)*T; Tp=NN*T; k=0:NN-1; f=k/Tp;

%rs等于60dB,因此采用布克莱曼窗 fp=120; fs=150;

%转换为数字频率 wp=2*pi*fp/fs1; ws=2*pi*fs/fs1;

bt=ws-wp; %计算过渡带宽度

N0=ceil(11*pi/bt);%计算滤波器阶数

N1=N0+mod(N0+1,2);%确保好h(n)长度N1是奇数

wc=(wp+ws)/2/pi;%计算理想高通滤波器通带截止频率

hn=fir1(N1-1,wc,blackman(N1));%调用firl计算高通FIR数字滤波器的h(n)

figure;

[H,W]=freqz(hn,1,512,2); plot(W,20*log10(abs(H)));

y1=filter(hn,1,xtg);%调用fftfilt用重叠相加法计算卷积

y1_fft=fft(y1,NN);

figure;

subplot(2,1,1); plot(t,y1)

axis([0,0.5*Tp,min(y1),max(y1)]); subplot(2,1,2);

stem(f,abs(y1_fft)/max(abs(y1_fft)),'.'); axis([0,fs1/5,0,1.2]); grid;

functionxt=xtg

%实验五信号x(t)产生函数,并显示信号的时域波形和幅频特性曲线 %xt=xtg产生一个长度为N,有加性高频噪声的単频调幅信号xt,N=1000 %采样频率Fs=1000Hz

%载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz

N=1000;Fs=1000;T=1/Fs;Tp=N*T; t=0:T:(N-1)*T;

fc=Fs/10;f0=fc/10;%载波频率fc=Fs/10,単频调制正弦波频率f0=fc/10

mt=cos(2*pi*f0*t);%产生単频正弦波调制信号mt,频率为f0

ct=cos(2*pi*fc*t);%产生载波正弦波信号mt,频率为fc

xt=mt.*ct; %相乘产生単频调幅信号xt

nt=2*rand(1,N)-1; %产生随机噪声nt %=======设计高通滤波器hn,用于滤除噪声nt中的低频成分,生成高通噪声====== fp=150;fs=200;Rp=0.1;As=70;%滤波器指标 fb=[fp,fs];m=[0,1];%计算remezord函数所需参数f,m,dev

dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];

[n,fo,mo,W]=remezord(fb,m,dev,Fs);%确定remez函数所需参数

hn=remez(n,fo,mo,W);%调用remez函数进行设计,用于滤除噪声nt中的低频成分 yt=filter(hn,1,10*nt);%滤除随机噪声中低频成分,生成高通噪声yt

%=========以下为绘图部分======== xt=xt+yt; %噪声加信号 fst=fft(xt,N);k=0:N-1;f=k/Tp; subplot(2,1,1);plot(t,xt);grid; xlabel('t/s');ylabel('x(t)');

axis([0,Tp/5,min(xt),max(xt)]); title('(a)信号加噪声波形')

subplot(2,1,2);plot(f,abs(fst)/max(abs(fst))); grid;title('(b)信号加噪声的频谱') axis([0,Fs/2,0,1.2]);

xlabel('f/Hz');ylabel('幅度')

4、仿真波形

(a)信号加噪声波形10x(t)0-1000.020.040.060.080.1t/s0.120.140.160.180.2(b)信号加噪声的频谱1幅度0.50050100150200250f/Hz300350400450500

10.50-0.5-100.050.10.150.20.250.30.350.40.450.510.80.60.40.20020406080100120140160180200

因篇幅问题不能全部显示,请点此查看更多更全内容