最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

实验五 FIR 滤波器的设计

来源:动视网 责编:小OO 时间:2025-09-30 21:01:53
文档

实验五 FIR 滤波器的设计

HUNANUNIVERSITY数字信号课程实验报告专业班级:通信工程一班完成日期:2014\\06\\01实验五FIR滤波器的设计1、实验目的认真复习FIR数字滤波器的基本概念,线性相位FIR滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位FIR低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗、凯塞窗设
推荐度:
导读HUNANUNIVERSITY数字信号课程实验报告专业班级:通信工程一班完成日期:2014\\06\\01实验五FIR滤波器的设计1、实验目的认真复习FIR数字滤波器的基本概念,线性相位FIR滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位FIR低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗、凯塞窗设


HUNAN  UNIVERSITY

数字信号

课程实验报告

 

专业班级:           通信工程一班              

完 成 日  期 :           2014\\06\\01                

实验五 FIR 滤波器的设计

1、实验目的

    认真复习 FIR 数字滤波器的基本概念,线性相位FIR 滤波器的条件和特点、幅度函数

特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和

设计步骤,线性相位FIR 低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。

    掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼

窗、凯塞窗设计IIR 数字滤波器的方法,熟悉和掌握频率抽样设计法的线性相位的设计方法,

并对各种线性相位的频率抽样法的设计给出调整和改进。

熟悉利用 MATLAB 进行各类FIR 数字滤波器的设计方法。

2、实验内容

a. 设线性相位FIR 滤波器单位抽样响应分别为

h(n) ={ -4,1, -1, -2,5,6,5, -2, -1,1, -4}

           ↑

h(n)={ -4,1,- 1, -2,5,6,6,5, -2,-1,1, -4}

           ↑

h(n) ={ -4,1, -1, -2,5,0, -5,2,1, -1,4}

           ↑

h(n) { -4,1, -1, -2,5,6, -6, -5,2,1, -1,4}

          ↑

分别求出滤波器的幅度频率响应 H(ω),系统函数H(z)以及零极点分布,并绘制相应的

波形和分布图。

1、

代码:

function [H,w,a,L]=H_Type1(h);  %求幅度频率响应

M=length(h);

L=floor((M-1)/2);

a=[h(L+1) 2*h(L:-1:1)];

n=[0:1:L];

w=[0:1:500]'*pi/500;

H=cos(w*n)*a';

主函数

clc;

syms z;

%偶对称单位冲激响应h(n),N为奇数

h1=[-4,1,-1,-2,5,6,5,-2,-1,1,-4];

N1=length(h1);

n1=[0:1:N1-1];

[H1,w1,a1,L1]=H_Type1(h1);

subplot(221);

stem(h1);  title('h1(n)');

subplot(222);

plot(H1);   title('幅度函数H1(w)');

subplot(223);

zplane(h1);  title('零极点');

HZ1=h1./(z.^n1)                  %系统函数H(z)

结果:

HZ1 =

[      -4,     1/z,  -1/z^2,  -2/z^3,   5/z^4,   6/z^5,   5/z^6,  -2/z^7,  -1/z^8,   1/z^9, -4/z^10]

2、

代码:

function [H,w,b,L]=H_Type2(h); %求幅度频率响应

M=length(h);

L=floor(M/2);

b=2*h(L:-1:1);

n=[1:1:L];

w=[0:1:500]'*pi/500;

H=cos(w*(n-1/2))*b';

主函数

%偶对称单位冲激响应h(n),N为偶数

figure;

h2=[-4,1,-1,-2,5,6,6,5,-2,-1,1,-4];

N2=length(h2);

n2=[0:1:N2-1];

[H2,w2,a2,L2]=H_Type2(h2);

subplot(221);

stem(h2);   title('h2(n)');

subplot(222);

plot(H2);   title('幅度函数H2(w)');

subplot(223);

zplane(h2);   title('零极点');

HZ2=h2./(z.^n2)                 %系统函数H(z)

结果:

HZ2 =

 

[      -4,     1/z,  -1/z^2,  -2/z^3,   5/z^4,   6/z^5,   6/z^6,   5/z^7,  -2/z^8,  -1/z^9,  1/z^10, -4/z^11]

 

3、

代码:

function [H,w,c,L]=H_Type3(h); %求幅度频率响应

M=length(h);

L=floor((M-1)/2);

c=2*h(L:-1:1);

n=[1:1:L];

w=[0:1:500]'*pi/500;

H=sin(w*n)*c';

主函数:

%奇对称单位冲激响应h(n),N为奇数

figure;

h3=[-4,1,-1,-2,5,0,-5,2,1,-1,4];

N3=length(h3);

n3=[0:1:N3-1];

[H3,w3,a3,L3]=H_Type3(h3);

subplot(221); 

stem(h3);    title('h3(n)');

subplot(222);

plot(H3);   title('幅度函数H3(w)');

subplot(223);

zplane(h3);   title('零极点');

HZ3=h3./(z.^n3)                 %系统函数H(z)

结果:

HZ3 =

 

[     -4,    1/z, -1/z^2, -2/z^3,  5/z^4,      0, -5/z^6,  2/z^7,  1/z^8, -1/z^9, 4/z^10]

 

4、

代码:

function [H,w,d,L]=H_Type4(h); %求幅度频率响应

M=length(h);

L=floor(M/2);

d=2*h(L:-1:1);

n=[1:1:L];

w=[0:1:500]'*pi/500;

H=sin(w*(n-1/2))*d';

主函数:

%奇对称单位冲激响应h(n),N为偶数

figure;

h4=[-4,1,-1,-2,5,6,-6,-5,2,1,-1,4];

N4=length(h4);

n4=[0:1:N4-1];

[H4,w4,a4,L4]=H_Type4(h4);

subplot(221); 

stem(h4);    title('h4(n)');

subplot(222);

plot(H4);    title('幅度函数H4(w)');

subplot(223);

zplane(h4);  title('零极点'); 

HZ4=h4./(z.^n4)               %系统函数H(z)

结果:

HZ4 =

 

[      -4,     1/z,  -1/z^2,  -2/z^3,   5/z^4,   6/z^5,  -6/z^6,  -5/z^7,   2/z^8,   1/z^9, -1/z^10,  4/z^11]

 

b. 设计FIR 数字低通滤波器,技术指标为:ωp=0.2π,ωst=0.3π,δ1=0.25dB,δ2=50dB。

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

(3) 选择凯塞窗函数设计该滤波器,并绘制相应的波形图。

代码:

function [db,mag,pha,grd,w]=freqz_m(b,a)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501));

w=(w(1:1:501));

mag=abs(H);

db=20*log10(mag+eps/max(mag));

pha=angle(H);

grd=grpdelay(b,a,w);

function hd=ideal_lp(wc,N)

alpha=(N-1)/2;

n=[0:1:(N-1)];

n=n-alpha;

fc=wc/pi

hd=fc*sinc(fc*n)

主函数:

%低通滤波器

clc;

wp=0.2*pi;

ws=0.3*pi;

as=50;

tr_width=ws-wp;

N=ceil((as-7.95)/(2.286*tr_width)+1);

n=[0:1:N-1];

beta=0.102*(as-8.7) 

wc=(ws+wp)/2;

hd=ideal_lp(wc,N);            %理想低通滤波器冲激响应

window=(kaiser(N,beta))';     %凯泽窗

h=hd.*window;                 %实际设计低通滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1)))

As=-round(max(db(ws/delta_w+1:1:501)))

subplot(221)

stem(n,hd);title('理想滤波器单位抽样响应');

axis([0,N-1,-0.1,0.3]);

xlabel('n');ylabel('hd(n)');

subplot(222)

stem(n,window);title('kaiser Window')

axis([0 N-1 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223);

stem(n,h);title('所设计的滤波器脉冲响应');

axis([0 N-1 -0.1 0.3]);xlabel('n');ylabel('h(n)')

subplot(224);

plot(w/pi,db);

title('频率响应');grid

axis([0 1 -100 10]);xlabel('w/pi');ylabel('H(w)');

hold on;

plot([0,0.4],[-50,-50],'r');

text(0.3,-45,num2str(as));

结果

c. 设计FIR 数字带通滤波器,技术指标为:

下阻带边缘:ωst1=0.2π,δs1=60dB,下通带边缘:ωp1=0.35π,δp1=1dB;

上通带边缘:ωp2=0.65π,δp1=1dB,上阻带边缘:ωst2=0.8π,δs2=60dB;

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

clc;

%用布莱克曼窗设计带通滤波器

wp1=0.35*pi;

ws1=0.2*pi;

wp2=0.65*pi;

ws2=0.8*pi;

As=60;

tr_width=min((wp1-ws1),(wp2-ws2));

N=ceil(11*pi/tr_width)+1;

N=-N;

n=[0:1:N-1];

wc1=(ws1+wp1)/2;

wc2=(ws2+wp2)/2;

hd=ideal_lp(wc2,N)-ideal_lp(wc1,N);  %理想带通滤波器冲激响应

window=(blackman(N))';              %布莱克曼窗

h=hd.*window;                     %实际设计带通滤波器冲激响应  

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-min(db(wp1/delta_w+1:1:wp2/delta_w));

As=-round(max(db(ws2/delta_w+1:1:501)));

subplot(221);

stem(n,hd);title('理想带通滤波器冲激响应');

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)');

subplot(222);

stem(n,window);title('Blackman Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计带通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224);

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('frequence in \\pi unit');ylabel('decibels');

hold on;

plot([0,0.3],[-74,-74],'r');

text(0.2,-70,num2str(As));

结果:

d. 设计FIR 数字带通滤波器,技术指标为:

下阻带边缘:ωst1=0.2π,δs1=60dB,下通带边缘:ωp1=0.4π,δp1=1dB;

上通带边缘:ωp2=0.6π,δp1=1dB,上阻带边缘:ωst2=0.8π,δs2=60dB;

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

clc;

%用布莱克曼窗设计带通滤波器

wp1=0.4*pi;

ws1=0.2*pi;

wp2=0.6*pi;

ws2=0.8*pi;

As=60;

tr_width=min((wp1-ws1),(wp2-ws2));

N=ceil(11*pi/tr_width)+1;

N=-N;

n=[0:1:N-1];

wc1=(ws1+wp1)/2;

wc2=(ws2+wp2)/2;

hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)  %理想带通滤波器冲激响应

window=(blackman(N))';             %布莱克曼窗

h=hd.*window;                      %实际设计带通滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-min(db(wp1/delta_w+1:1:wp2/delta_w));

As=-round(max(db(ws2/delta_w+1:1:501)));

subplot(221);

stem(n,hd);title('理想带通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('Blackman Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计带通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('frequence in \\pi unit');ylabel('decibels');

hold on;

plot([0,0.3],[-74,-74],'r');

text(0.2,-70,num2str(As));

结果:

e. 设计FIR 数字带通滤波器,技术指标为:

下阻带边缘:ωst1=0.2π,δs1=20dB,下通带边缘:ωp1=0.4π,δp1=1dB;

上通带边缘:ωp2=0.6π,δp1=1dB,上阻带边缘:ωst2=0.8π,δs2=20dB;

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

clc;

%用矩形窗设计带通滤波器

wp1=0.4*pi;

ws1=0.2*pi;

wp2=0.6*pi;

ws2=0.8*pi;

As=20;

tr_width=min((wp1-ws1),(wp2-ws2));

N=ceil(11*pi/tr_width)+1;

N=-N;

n=[0:1:N-1];

wc1=(ws1+wp1)/2;

wc2=(ws2+wp2)/2;

hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)  %理想带通滤波器冲激响应

window=(boxcar(N))'; %矩形窗

h=hd.*window;        %实际设计带通滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-min(db(wp1/delta_w+1:1:wp2/delta_w));

As=-round(max(db(ws2/delta_w+1:1:501)));

subplot(221);

stem(n,hd);title('理想通带滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('Rectangle Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计通带滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

hold on;

plot([0,0.3],[-21,-21],'r');

text(0.2,-21,num2str(As));

结果:

f. 设计FIR 数字高通滤波器,技术指标为:通带截止频率为ωp=15π/27,阻带截止频率

为ωst=11π/27,通带最大衰减为δ1=2.5dB,阻带最小衰减为δ2=55dB。

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

clc;

%用布莱克曼窗设计高通滤波器

wp=15/27*pi;

ws=11/27*pi;

As=55;

tr_width=wp-ws;

N=ceil(11*pi/tr_width)+1;

n=[0:1:N-1];

wc=(ws+wp)/2;

hd=ideal_lp(pi,N)-ideal_lp(wc,N)  %理想高通滤波器冲激响应

window=(blackman(N))';           %布莱克曼窗

h=hd.*window;                    %实际设计高通滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-min(db(1:1:wp/delta_w+1));

As=-round(max(db(ws/delta_w+1:1:501)));

subplot(221);

stem(n,hd);title('理想高通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('blackman Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计高通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

结果:

g. 设计FIR 数字高通滤波器,技术指标为:通带截止频率为ωp=0.6π,阻带截止频率为

ωst=0.4π,通带最大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

clc;

%用海明窗设计带通滤波器

wp=0.6*pi;

ws=0.4*pi;

As=40;

tr_width=wp-ws;

N=ceil(11*pi/tr_width)+1;

n=[0:1:N-1];

wc=(ws+wp)/2;

hd=ideal_lp(pi,N)-ideal_lp(wc,N)  %理想高通滤波器冲激响应

window=(hamming(N))';         %海明窗

h=hd.*window;                 %实际设计高通滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

Rp=-min(db(1:1:wp/delta_w+1));

As=-round(max(db(ws/delta_w+1:1:501)));

subplot(221);

stem(n,hd);title('理想高通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('hamming Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计高通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

结果:

h. 滤波器的技术指标为:通带截止频率为ωp=0.6π,阻带截止频率为ωst=0.4π,通带最

大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。

(1) 通过技术指标,选择一种窗函数设计一个具有π/2 相移的FIR 高通滤波器;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

function hd=ideal_pi(wc,N)  %有pi/2相移的滤波器冲激响应

alpha=(N-1)/2;

n=[0:1:(N-1)];

n=n-alpha;

fc=wc/pi

hd=fc*sinc(fc*(n-1/2));

function[db,mag,pha,w]=freqz_m2(b,a)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501));

w=(w(1:1:501));

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

主函数:

%设计高通滤波器

clc;

Wp=0.6*pi;

Ws=0.4*pi;

tr_width=Wp-Ws;

M=ceil(6.2*pi/tr_width)+1;

n=0:1:M-1;

Wc=(Ws+Wp)/2;

hd=ideal_pi(pi,M)-ideal_pi(Wc,M);  %理想高通滤波器冲激响应

w_ham=(hanning(M))';                %汉宁窗

h=hd.*w_ham;                        %实际设计高通滤波器冲激响应 

[db,mag,pha,w]=freqz_m2(h,[1]);

delta_w=2*pi/1000;

Ap=-(min(db(Wp/delta_w+1:1:501)))

As=-round(max(db(1:1:Ws/delta_w+1)))

subplot(221)

stem(n,hd);title('理想高通滤波器冲激响应')

axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222)

stem(n,w_ham);title('Hanning Window')

axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')

subplot(223)

stem(n,h);title('实际设计高通滤波器冲激响应')

axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');grid

axis([0 1 -100 10]);

xlabel('w/pi');ylabel('幅度');

结果:

i. 设计FIR 数字带阻滤波器,其技术指标为:

低端阻带边缘:ωst1=0.4π,δs1=40dB,低端通带边缘:ωp1=0.2π,δp1=1dB;

高端通带边缘:ωp2=0.8π,δp1=1dB,高端阻带边缘:ωst2=0.6π,δs2=40dB;

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

代码:

function hd=ideal_bs(Wcl,Wch,m);  %带阻滤波器冲激响应

alpha=(m-1)/2;

n=[0:1:(m-1)];

m=n-alpha+eps;

hd=[sin(m*pi)+sin(Wcl*m)-sin(Wch*m)]./(pi*m)

function[db,mag,pha,w]=freqz_m2(b,a)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501));

w=(w(1:1:501));

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

主函数:

%设计带阻滤波器

clc;

wpl=0.2*pi;

wph=0.8*pi;

wsl=0.4*pi;

wsh=0.6*pi;

tr_width=min((wsl-wpl),(wph-wsh));

M=ceil(6.2*pi/tr_width);        

n=0:1:M-1;

wcl=(wsl+wpl)/2;

wch=(wsh+wph)/2;

hd=ideal_bs(wcl,wch,M);   %理想带阻滤波器冲激响应

w_ham=(hanning(M))';      %汉宁窗

h=hd.*w_ham;               %实际设计带阻滤波器冲激响应 

[db,mag,pha,w]=freqz_m2(h,[1]);

delta_w=2*pi/1000;

Ap=-(min(db(1:1:wpl/delta_w+1)))

As=-round(max(db(wsl/delta_w+1:1:wsh/delta_w+1)))

subplot(221)

stem(n,hd);title('理想带阻滤波器冲激响应')

axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('hd(n)')

subplot(222)

stem(n,w_ham);title('Hanning Window')

axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')

subplot(223)

stem(n,h);title('实际设计带阻滤波器冲激响应')

axis([0 M-1 -0.1 0.7]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');grid

axis([0 1 -100 10]);

xlabel('w/pi');ylabel('幅度');

结果:

j. 设计FIR 数字带阻滤波器,其频率响应函数为:

其中阻带衰减为 50dB。

(1) 通过技术指标,选择一种窗函数进行设计;

(2) 求滤波器的单位抽样响应、频率响应,并绘制波形。

(3) 用凯塞窗设计设计该滤波器,并绘制相应的波形图。

代码:

%设计带阻滤波器

clc;

M=45; As=50; 

n=[0:1:M-1];

beta=0.1102*(As-8.7);

w_kai=(kaiser(M,beta))';         %凯泽窗

wc1=pi/3; wc2=2*pi/3;

hd=ideal_lp(wc1,M)+ideal_lp(pi,M)-ideal_lp(wc2,M); %理想带阻滤波器冲激响应

h=hd.*w_kai;                             %实际设计带阻滤波器冲激响应 

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(2,2,1); 

stem(n,hd); title('理想带阻滤波器冲激响应')

axis([-1 M -0.2 0.8]);

xlabel('n'); ylabel('hd(n)')

subplot(2,2,2); 

stem(n,w_kai);title('Kaiser Window')

axis([-1 M 0 1.1]); xlabel('n'); ylabel('w(n)')

subplot(2,2,3);

stem(n,h);title('实际设计带阻滤波器冲激响应 ')

axis([-1 M -0.2 0.8]); xlabel('n'); ylabel('h(n)')

subplot(2,2,4);

plot(w/pi,db); axis([0 1 -80 10]);

title('滤波器频谱响应');grid;

xlabel('w/pi');ylabel('幅度');

结果:

k. 设计FIR 数字低通滤波器,其滤波器的截止频率为100Hz,滤波器的阶次为80。分

别用矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗设计数字滤波器,并绘制相应的窗函

数波形和幅度频率响应波形。

代码:

%数字低通滤波器

clc;

%用矩形窗设计带通滤波器

wc=100;

N=80;

n=[0:1:N-1];

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(boxcar(N))'; %矩形窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('Rectangle Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

%用巴特列特窗设计带通滤波器

figure;

wc=100;

N=80;

n=[0:1:N-1];

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(bartlett(N))'; %巴特列特窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('bartlett Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

%用汉宁窗设计带通滤波器

figure;

wc=100;

N=80;

n=[0:1:N-1];

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(hanning(N))'; %汉宁窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('hanning Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

%用海明窗设计带通滤波器

figure;

wc=100;

N=80;

n=[0:1:N-1];

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(hamming(N))'; %海明窗窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('hammimg Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

%用布拉克曼窗设计带通滤波器

figure;

wc=100;

N=80;

n=[0:1:N-1];

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(blackman(N))'; %布拉克曼窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('blackman Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

%用凯泽窗设计带通滤波器

figure;

wc=100;

N=80;

n=[0:1:N-1];

beta=9;

hd=ideal_lp(wc,N) %理想低通滤波器冲激响应

window=(kaiser(N,beta))'; %凯泽窗

h=hd.*window;    %实际设计通带滤波器冲激响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

subplot(221);

stem(n,hd);title('理想低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,window);title('kaiser Window');

axis([-10 N+9 0 1.1]);xlabel('n');ylabel('w(n)');

subplot(223)

stem(n,h);title('实际设计低通滤波器冲激响应')

axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')

subplot(224)

plot(w/pi,db);title('滤波器频谱响应');

grid

axis([0 1 -150 10]);

xlabel('w/pi');ylabel('幅度');

结果:

分析:从上面几个图可以看出,不同的窗函数得出的滤波器的阻带衰减的程度不一样,矩形窗效果差,三角形窗、汉宁窗、海明窗、布莱克曼窗越来越好,而凯泽窗效果最好。

l. .FIR 滤波器的单位抽样响应为

h(n)=1/9* {1,2,3,2,1}

                 ↑

编制MATLAB 程序求系统的频率采样型结构的系数,并画出频率抽样型结构。

代码:

clc;

h=[1,2,3,2,1];

M=5;

n=(M-3)/2;

a=2*h(3-n)

k=-500:500;

K=500;

w=k*pi/K;

p=a*cos(w*n);

plot(w,p);

ylabel('p(w)'); xlabel('w');

 结果:

m. 一个理想差分器的频率响应为:

用长度为 21 的汉宁窗设计一个数字FIR 差分器,并绘制其时域和频率的响应波形。

代码:

function [Hr,w,c,L] = Hr_Type3(h);

M=length(h);

L=(M-1)/2;

c=[2*h(L+1:-1:1)];

n=[0:1:L];

w=[0:1:500]'*pi/500;

Hr=sin(w*n)*c';

主函数:

%差分器

clc;

M=21; 

alpha=(M-1)/2; n=0:M-1;

hd=(cos(pi*(n-alpha)))./(n-alpha); %理想差分器冲激响应

hd(alpha+1)=0;

w_ham=(hamming(M))'; %海明窗

h=hd.*w_ham;         %实际差分器冲激响应

[Hr,w,P,L]=Hr_Type3(h);

subplot(221); 

stem(n,hd); title('理想差分器冲激响应')

axis([-1 M -1.2 1.2]);

xlabel('n'); ylabel('hd(n)')

subplot(222);

stem(n,w_ham);

title('Hamming Window')

axis([-1 M 0 1.2]); xlabel('n'); ylabel('w(n)')

subplot(223); 

stem(n,h);title('实际差分器冲激响应')

axis([-1 M -1.2 1.2]); xlabel('n'); ylabel('h(n)')

subplot(224);

plot(w/pi,Hr/pi);

title('差分器频谱响应');grid;

xlabel('w/pi'); ylabel('幅度');

axis([0 1 0 1]);

结果:

n. 利用汉宁窗设计一个长度为25 的数字希尔伯特变换器,并绘制它的时域和频域的响

应波形。

代码:

%希尔伯特变换器

clc;

M=25;

alpha=(M-1)/2;

n=0:M-1;

hd=(2/pi)*((sin((pi/2)*(n-alpha)).^2)./(n-alpha));

hd(alpha+1)=0;

w_han=(hann(M))';

h=hd.*w_han; 

[Hr,w,P,L]=Hr_Type3(h);

subplot(2,2,1); 

stem(n,hd); title('Ideal Impulse Response')

axis([-1 M -1.2 1.2]);

xlabel('n'); ylabel('hd(n)');

 

subplot(2,2,2); 

stem(n,w_han);title('Hann Window')

axis([-1 M 0 1.2]); xlabel('n'); ylabel('w(n)')

subplot(2,2,3); 

stem(n,h);title('Actual Impulse Response')

axis([-1 M -1.2 1.2]); xlabel('n'); ylabel('h(n)')

w=w';

Hr=Hr';

w=[-fliplr(w),w(2:501)]; 

Hr=[-fliplr(Hr), Hr(2:501)];

subplot(2,2,4);plot(w/pi,Hr); title('Amplitude Response');grid;

xlabel('frequency in pi units'); ylabel('Hr');

axis([-1 1 -1.1 1.1]);

结果:

p. FIR 数字低通滤波器的技术指标为:ωp=0.2π,ωst=0.3π,δ1=0.25dB,δ2=50dB。

利用频率采样方法设计 FIR 数字滤波器,并绘制滤波器的单位冲激响应、幅度频率响应

的波形。

代码:

function [Hr,w,b,L] = Hr_Type2(h);

M=length(h); L=M/2;

b=2*[h(L:-1:1)]; 

n=[1:1:L]; 

n=n-0.5;

w=[0:1:500]'*pi/500; Hr=cos(w*n)*b';

function [db,mag,pha,grd,w]=freqz_m(b,a)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501));

w=(w(1:1:501));

mag=abs(H);

db=20*log10(mag+eps/max(mag));

pha=angle(H);

grd=grpdelay(b,a,w);

主函数:

clc;

M=20; 

alpha=(M-1)/2;

l=0:M-1;

wl=(2*pi/M)*l;

Hrs=[1,1,1,zeros(1,15),1,1];  %Ideal Amp Res sampled

Hdr=[1,1,0,0];

wdl=[0,0.25,0.25,1]; %Ideal Amp Res for plotting

k1=0:floor((M-1)/2); 

k2=floor((M-1)/2)+1:M-1;

angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];

H=Hrs.*exp(j*angH); 

h=real(ifft(H,M));

[db,mag,pha,grd,w]=freqz_m(h,1); 

[Hr,ww,a,L]=Hr_Type2(h);

subplot(2,2,1);plot(wl(1:11)/pi,Hrs(1:11),'o',wdl,Hdr);

axis([0,1,-0.1,1.1]);

title('Frequency Samples: M=20')

xlabel('frequency in pi units'); ylabel('Hr(k)');

 

subplot(2,2,2); 

stem(l,h); 

axis([-1,M,-0.1,0.3])

title('Impulse Response');

xlabel('n'); ylabel('h(n)');

subplot(2,2,3);

plot(ww/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o');

axis([0,1,-0.2,1.2]); title('Amplitude Response')

xlabel('frequency in pi units'); ylabel('Hr(w)')

subplot(2,2,4);

plot(w/pi,db); 

axis([0,1,-60,10]); grid

title('Magnitude Response'); xlabel('frequency in pi units');

ylabel('Decibels');

结果:

q. 用窗函数法设计一个线性相位的FIR 数字低通滤波器,其技术指标为:ωp=0.2π,

ωst=0.4π,δ1=0.25dB,δ2=50dB。

代码:

function[db,mag,pha,H,w]=freqz_m3(b,a)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501))'; w=(w(1:1:501))';

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

主函数:

clc;

wp=0.2*pi;

ws=0.4*pi;

tr_width=ws-wp;

M=ceil(6.6*pi/tr_width)+1;

n=[0:1:M-1];

wc=(ws+wp)/2;

hd=ideal_lp(wc,M);

w_ham=(hamming(M))';   %海明窗

h=hd.*w_ham;

[db,mag,pha,H,w]=freqz_m3(h,[1]);

delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1)));

As=-round(max(db(ws/delta_w+1:1:501)));

figure(1);

subplot(221);

stem(n,hd);title('Ideal Impulse Rresponse')

axis([0 M-1 -0.1 0.3]);

xlabel('n');ylabel('hd(n)')

subplot(222);

stem(n,w_ham);title('Hamming Window');

axis([0 M-1 0 1.1]);

xlabel('n');ylabel('w(n)');

subplot(223);

stem(n,h);title('Actual Impuse Response');

axis([0 M-1 -0.1 0.3]);

xlabel('n');ylabel('h(n)');

subplot(224);

plot(w/pi,db);

title('Magnitude Response in db');grid

axis([0 1 -100 10]);

xlabel('frequence in \\pi unit');ylabel('decibels');

%solution of problem (b)

Rn=ones(1,10);

n=0:1:9;

dw=w(2)-w(1);

w=[-fliplr(w),w(2:501)];

H=[fliplr(H),H(2:501)];

xw=Rn*(exp(-j)).^(n'*w);

answ=H.*xw;

Rnn=answ*exp(-j).^(w'*n)*dw/(2*pi);

figure(2);

subplot(221);

stem(n,Rn);

xlabel('n');ylabel('Rn');

title('input rectangle signal in T-domain');

subplot(222)

stem(w/pi,xw)

xlabel('w/pi');ylabel('Rw');

title('input rectangle signal in F-domain');

subplot(223);

plot(w/pi,abs(answ))

xlabel('w/\\pi');ylabel('Magnitude of H(w)');

title('output signal in F-domain after filteration');

subplot(224);

stem(n,abs(Rnn));

xlabel('n');ylabel('Rnn');

title('output signal in T-domain after filteration');

结果:

实验总结:

    这个实验都是滤波器的知识,通过这个实验让我明白了滤波器是如何设计的。这个实验的内容有点多,在做的过程中花了较多的时间。这个实验也让我知道了用不同的窗设计滤波器的效果是不一样的;知道了如何去使用这些窗函数;针对不同的阻带衰减要用不同的窗函数。凯泽窗的效果是最好的,它可以使阻带衰减从-30到-100,当beta在10左右时,阻带衰减可以到达100dB。数字差分器和希尔伯特变换器也都可以有窗函数来设计。由此可知窗函数的应用是比较广泛的。

文档

实验五 FIR 滤波器的设计

HUNANUNIVERSITY数字信号课程实验报告专业班级:通信工程一班完成日期:2014\\06\\01实验五FIR滤波器的设计1、实验目的认真复习FIR数字滤波器的基本概念,线性相位FIR滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位FIR低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗、凯塞窗设
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top