数字信号处理实验(五):数字滤波器设计

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Xiaomo_haa/article/details/84954824

目录

一、实验目的:

二、实验内容及要求:

1. 双线性变换法设计IIR数字滤波器:

 2. 窗函数法设计FIR数字滤波器:

三、实验结果及问题回答:

1. 双线性变换法设计IIR数字滤波器:

 2. 窗函数法设计FIR数字滤波器:


一、实验目的:

    设计传输函数,使其频率响应逼近给定的频率响应指标。本实验掌握双线性变换法设计IIR数字滤波器的原理及具体设计方法;掌握窗函数法设计FIR数字滤波器的原理及具体设计方法。

二、实验内容及要求:

1. 双线性变换法设计IIR数字滤波器:

用双线性变换法及Mat lab编程设计一个IIR数字带通滤波器,其中通带波纹为1dB,阻带最小衰减为40dB,通带截止频率分别为500Hz和700Hz,阻带截止频率分别为400Hz和800Hz,抽样频率为2000Hz。画出该滤波器的幅频特性图。

 2. 窗函数法设计FIR数字滤波器:

用窗函数法(汉明窗)及Mat lab编程设计一个FIR数字带通滤波器,其中通带波纹为1dB,阻带最小衰减为40dB,通带截止频率分别为500Hz和700Hz,阻带截止频率分别为400Hz和800Hz,抽样频率为2000Hz。画出该滤波器的幅频特性图。

扫描二维码关注公众号,回复: 4816822 查看本文章

三、实验结果及问题回答:

1. 双线性变换法设计IIR数字滤波器:

  (1)程序:

%%

clear all

Rp=1;%设定通带波纹

Rs=40;%设定阻带最小衰减

wp1=500;%设定通带截止频率

wp2=700;

ws1=400;%设定阻带截止频率

ws2=800;

Fp=2000;%设定抽样频率



%%

%模拟频率转换成数字角频率

Wp1=2*pi*wp1/Fp;

Wp2=2*pi*wp2/Fp;

Ws1=2*pi*ws1/Fp;

Ws2=2*pi*ws1/Fp;



%%

%非线性化

WP1=tan(Wp1/2);

WP2=tan(Wp2/2);

WS1=tan(Ws1/2);

WS2=tan(Ws2/2);

WP0=sqrt(WP1*WP2);%等效中频

Bw=WP2-WP1;%带宽



%%

%标准化

Normal_P0=WP0/Bw;

Normal_P1=WP1/Bw;

Normal_P2=WP2/Bw;

Normal_S1=WS1/Bw;

Normal_S2=WS2/Bw;



%%

%转换为等效低通

EqualLowPass_P=(Normal_P2^2-Normal_P0^2)/Normal_P2;

EqualLowPass_S1=-(Normal_S1^2-Normal_P0^2)/Normal_S1;

EqualLowPass_S2=-(Normal_S2^2-Normal_P0^2)/Normal_S2;

EqualLowPass_S=min(EqualLowPass_S1,EqualLowPass_S2);



%%

%估计滤波器阶数

[N,Wn]=buttord(EqualLowPass_P,EqualLowPass_S,Rp,Rs,'s');



%%

%设计滤波器

[num1,den1]=butter(N,Wn,'s');

[num2,den2]=lp2bp(num1,den1,WP0,Bw);

[num,den]=bilinear(num2,den2,0.5);



%%

%计算增益响应

w=0:pi/255:pi;

h=freqz(num,den,w);

g=20*log10(abs(h));



%%

%画增益响应图

figure;

plot(w/pi,g);

grid on;

axis([0 1 -60 5]);

xlabel('\omega/\pi');

ylabel('Gain in db');

title('带通滤波器的增益响应图')

(2)幅频特性:

 2. 窗函数法设计FIR数字滤波器:

(1)程序:

%%

clear all;

Rp=1;%设定通带波纹

Rs=40;%设定阻带最小衰减

wp1=500;%设定通带截止频率

wp2=700;

ws1=400;%设定阻带截止频率

ws2=800;

Ft=2000;%设定抽样频率

Fp=[wp1,wp2];

Fs=[ws1,ws2];

Deta_p=1-10^(-Rp/20);

Deta_s=10^(-Rs/20);



%%

%估计滤波器阶数

N=kaiord(Fp,Fs,Deta_p,Deta_s,Ft);



%%

%设计滤波器

Wn=2/Ft*[wp1 wp2];%标准化频率

b=fir1(N,Wn,'bandpass');



%%

%计算增益响应

[g,w]=Gain(b,1);



%%

%绘制增益响应

plot(w/pi,g);

grid on;

axis([0 1 -60 5]);

xlabel('\omega/\pi');

ylabel('gain in dB');

title('FIR带通滤波器的增益响应')



gain函数:

function [g,w] = gain(num,den)

w = 0:pi/255:pi;

h = freqz(num,den,w);

g = 20*log10(abs(h));



kaiord函数:

function N = kaiord(Fp, Fs, Rp, Rs, FT)

if nargin == 4,

      FT = 2;

end

if length(Fp) > 1,

      TBW = min(abs(Fp(1) - Fs(1)), abs(Fp(2) - Fs(2)));

else

      TBW = abs(Fp - Fs);

end

num = -20*log10(sqrt(Rp*Rs))-13;

den = 14.6*TBW/FT;

N = ceil(num/den);

  (2)幅频特性:

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Xiaomo_haa/article/details/84954824