数字滤波器实现.docx

上传人:b****3 文档编号:4593107 上传时间:2022-12-07 格式:DOCX 页数:18 大小:58.46KB
下载 相关 举报
数字滤波器实现.docx_第1页
第1页 / 共18页
数字滤波器实现.docx_第2页
第2页 / 共18页
数字滤波器实现.docx_第3页
第3页 / 共18页
数字滤波器实现.docx_第4页
第4页 / 共18页
数字滤波器实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字滤波器实现.docx

《数字滤波器实现.docx》由会员分享,可在线阅读,更多相关《数字滤波器实现.docx(18页珍藏版)》请在冰豆网上搜索。

数字滤波器实现.docx

数字滤波器实现

实验八数字滤波器实现

 

实验室名称:

信息学院2204实验时间:

2015年11月26日

姓名

一、实验目的

1、通过逼近给定的频率响应指标而得到数字传输函数G(z),并通过软件实现。

2、利用MATLAB来研究冲激响应或有限冲激响应数字滤波器结构的软件实现。

3、并联Ⅰ型实现、并联II型实现、直接II型仿真滤波器的验证仿真。

二、实验内容

Q8.1程序P8.1设计了什么类型的滤波器?

其指标是什么?

滤波器的阶数是多少?

为了检验仿真,需要计算多少个冲激响应样本?

仿真是正确的吗?

Q8.2用转置的直接II型仿真滤波器,修改程序P8.1并运行修改后的程序。

仿真是正确的吗?

Q8.3生成Q8.1中产生的传输函数的一个级联实现,并编写一个程序来仿真它。

其中每个单独的部分用一个直接Ⅱ型实现。

验证仿真。

Q8.5生成Q8.1中传输函数的一个并联Ⅰ型实现,并编写一个程序来仿真它。

每一个单独的部分用直接Ⅱ型实现。

验证仿真。

Q8.6生成Q8.1中传输函数的一个并联II型实现,并编写一个程序来仿真它。

每一个单独的部分用直接Ⅱ型实现。

验证仿真。

Q8.7运行程序P8.2并产生被仿真的级联格型结构的传输函数。

该传输函数与式(8.35)中的相同吗?

Q8.9程序设计了什么类型的滤波器?

其指标是什么?

滤波器的阶数是多少?

形成输入的正弦序列的频率是多少?

Q8.10运行P8.3并产生两个图形。

哪种输入成分会在滤波器输出出现?

为什么输出序列的开始部分不是一种理想的正弦曲线?

修改P8.3,以便纸过滤序列X2[n]。

产生的输出序列和预料的是一样的吗?

证明你的答案。

Q8.14程序P8.4设计了什么类型的滤波器?

其指标是什么?

滤波器的阶数是多少?

为了验证仿真,需要多少个冲激响应样本?

仿真是正确的吗?

Q8.15修改程序P8.4,用直接II型仿真该滤波器,运行修改后的程序。

仿真是正确的吗?

Q8.16使用程序P8.4生成在习题Q8.4中产生的传输函数的一个级联实现,写出对其仿真的一个程序。

其中每一个部分以直接II型实现。

验证仿真。

三、实验器材及软件

1.微型计算机1台

2.MATLAB7.0软件

四、实验原理

1、可调数字滤波器的设计基础是复变量的z谱变换,通过z替换为F(z),将具有给定截止频率的数字滤波器的实现调整为具有不同截止频率的另一个实现。

2、利用全通结构代替每一个延时块,可能会导致实现Gnew(z)时具有不能被实现的无延时环结构。

3、设计可调有限冲激响应滤波器的一种简单方法是基于加窗的傅里叶级数方法。

4、通常情况下,复数乘法和复数加法总数量是N(log2N),通使用Wn的对称性质,可进一步简化计算得复杂性。

五、实验步骤

1、打开计算机中的MATLAB

2、在MATLAB中新建一个M-file,在其中输入实验要求的相关代码

3、输入代码后调试代码,代码无误后可以得到相应的实验结果

4、观察实验结果回答相关问题

5、记录实验结果,将图形等截图粘贴,完成实验报告

六、实验记录(数据、图表、波形、程序等)

Q8.1

%ProgramP8_1

clearall;clc;

Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;

[N1,Wn1]=buttord(Wp,Ws,Rp,Rs)

[num,den]=butter(N1,Wn1);

disp('分子系数是');disp(num);

disp('分母系数是');disp(den);

impres=direct2(num,den,[1zeros(1,4*N1)]);

[p,d]=strucver(impres,2*N1);

disp('实际分子系数是');disp(p');

disp('实际分母系数是');disp(d');

运行结果:

N1=2Wn1=0.36080.5421

分子系数是

0.05710-0.114300.0571

分母系数是

1.0000-0.50991.2862-0.33500.4479

实际分子系数是

0.0571-0.0000-0.11430.00000.0571

实际分母系数是

1.0000-0.50991.2862-0.33500.4479

Q8.2

%ProgramP8_1

clearall;clc;

Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;

[N1,Wn1]=buttord(Wp,Ws,Rp,Rs)

[num,den]=butter(N1,Wn1);

disp('分子系数是');disp(num);

disp('分母系数是');disp(den);

impres=filter(num,den,[1zeros(1,4*N1)]);

[p,d]=strucver(impres,2*N1);

disp('实际分子系数是');disp(p');

disp('实际分母系数是');disp(d');

运行结果

N1=2Wn1=0.36080.5421

分子系数是

0.05710-0.114300.0571

分母系数是

1.0000-0.50991.2862-0.33500.4479

实际分子系数是

0.05710.0000-0.114300.0571

实际分母系数是

1.0000-0.50991.2862-0.33500.4479

Q8.3

%ProgramP8

clearall;clc;

Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;

[N,Wn]=buttord(Wp,Ws,Rp,Rs)

[num,den]=butter(N,Wn);

[z,p,k]=tf2zp(num,den)

sos=zp2sos(z,p,k)

num1=[sos(1,1)sos(1,2)sos(1,3)];

den1=[sos(1,4)sos(1,5)sos(1,6)];

disp('第一级的分子系数是');disp(num1);

disp('第一级的分母系数是');disp(den1);

num2=[sos(2,1)sos(2,2)sos(2,3)];

den2=[sos(2,4)sos(2,5)sos(2,6)];

disp('第二级的分子系数是');disp(num2);

disp('第二级的分母系数是');disp(den2);

impres1=direct2(num1,den1,[1zeros(1,2*N)]);

[p1,d1]=strucver(impres1,N);

disp('第一级的实际分子系数是');disp(p1');

disp('第一级的实际分母系数是');disp(d1');

impres2=direct2(num2,den2,[1zeros(1,2*N)]);

[p2,d2]=strucver(impres2,N);

disp('第二级的实际分子系数是');disp(p2');

disp('第二级的实际分母系数是');disp(d2');

运行结果

N=2Wn=0.36080.5421

sos=

0.05710.11430.05711.00000.08770.6601

1.0000-2.00001.00001.0000-0.59760.6785

第一级的分子系数是

0.05710.11430.0571

第一级的分母系数是

1.00000.08770.6601

第二级的分子系数是

1.0000-2.00001.0000

第二级的分母系数是

1.0000-0.59760.6785

第一级的实际分子系数是

0.05710.11430.0571

第一级的实际分母系数是

1.00000.08770.6601

第二级的实际分子系数是

1.0000-2.00001.0000

第二级的实际分母系数是

1.0000-0.59760.6785

Q8.5

clearall;clc;

Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;

[N,Wn]=buttord(Wp,Ws,Rp,Rs)

[num,den]=butter(N,Wn);

[r1,p1,k1]=residuez(num,den);

disp('并联I型')

disp('留数是');disp(r1);

disp('极点是');disp(p1);

disp('常数');disp(k1);

numI1=[2*real(r1

(1))-2*(real(r1

(1))*real(p1

(1))+imag(r1

(1))*imag(p1

(1)))];

denI1=[1-2*real(p1

(1))real(p1

(1))^2+imag(p1

(1))^2];

numI2=[2*real(r1(3))-2*(real(r1(3))*real(p1(3))+imag(r1(3))*imag(p1(3)))];

denI2=[1-2*real(p1(3))real(p1(3))^2+imag(p1(3))^2];

disp('并联I型的常数是');disp(k1);

disp('并联I型的第一级的分子系数是');disp(numI1);

disp('并联I型的第一级的分母系数是');disp(denI1);

disp('并联I型的第二级的分子系数是');disp(numI2);

disp('并联I型的第二级的分母系数是');disp(denI2);

impresI1=direct2(numI1,denI1,[1zeros(1,2*N)]);

[pI1,dI1]=strucver(impresI1,N);

disp('并联I型的第一级的实际分子系数是');disp(pI1');

disp('并联I型的第一级的实际分母系数是');disp(dI1');

impresI2=direct2(numI2,denI2,[1zeros(1,2*N)]);

[pI2,dI2]=strucver(impresI2,N);

disp('并联I型的第二级的实际分子系数是');disp(pI2');

disp('并联I型的第二级的实际分母系数是');disp(dI2');

运行结果如下

N=2Wn=0.36080.5421

并联I型

留数是

-0.0235+0.1978i

-0.0235-0.1978i

-0.0117-0.2132i

-0.0117+0.2132i

极点是

0.2988+0.7676i

0.2988-0.7676i

-0.0438+0.8113i

-0.0438-0.8113i

常数

0.1276

并联I型的常数是

0.1276

并联I型的第一级的分子系数是

-0.0470-0.2897

并联I型的第一级的分母系数是

1.0000-0.59760.6785

并联I型的第二级的分子系数是

-0.02340.3448

并联I型的第二级的分母系数是

1.00000.08770.6601

并联I型的第一级的实际分子系数是

-0.0470-0.2897-0.0000

并联I型的第一级的实际分母系数是

1.0000-0.59760.6785

并联I型的第二级的实际分子系数是

-0.02340.34480.0000

并联I型的第二级的实际分母系数是

1.00000.08770.6601

Q8.6

%ProgramP8

clearall;clc;

Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;

[N,Wn]=buttord(Wp,Ws,Rp,Rs)

[num,den]=butter(N,Wn);

[r2,p2,k2]=residue(num,den);

disp('并联II型')

disp('留数是');disp(r2);

disp('极点是');disp(p2);

disp('常数是');disp(k2);

numII1=[02*real(r2

(1))-2*(real(r2

(1))*real(p2

(1))+imag(r2

(1))*imag(p2

(1)))];

denII1=[1-2*real(p2

(1))real(p2

(1))^2+imag(p2

(1))^2];

numII2=[02*real(r2(3))-2*(real(r2(3))*real(p2(3))+imag(r2(3))*imag(p2(3)))];

denII2=[1-2*real(p2(3))real(p2(3))^2+imag(p2(3))^2];

disp('并联II型的常数是');disp(k2);

disp('并联II型的第一级的分子系数是');disp(numII1);

disp('并联II型的第一级的分母系数是');disp(denII1);

disp('并联II型的第二级的分子系数是');disp(numII2);

disp('并联II型的第二级的分母系数是');disp(denII2);

impresII1=direct2(numII1,denII1,[1zeros(1,2*N)]);

[pII1,dII1]=strucver(impresII1,N);

disp('并联II型的第一级的实际分子系数是');disp(pII1');

disp('并联II型的第一级的实际分母系数是');disp(dII1');

impresII2=direct2(numII2,denII2,[1zeros(1,2*N)]);

[pII2,dII2]=strucver(impresII2,N);

disp('并联II型的第二级的实际分子系数是');disp(pII2');

disp('并联II型的第二级的实际分母系数是');disp(dII2');

运行结果

N=2Wn=0.36080.5421

并联II型

留数是

-0.1589+0.0411i

-0.1589-0.0411i

0.1734-0.0002i

0.1734+0.0002i

极点是

0.2988+0.7676i

0.2988-0.7676i

-0.0438+0.8113i

-0.0438-0.8113i

常数是

0.0571

并联II型的常数是

0.0571

并联II型的第一级的分子系数是

0-0.31780.0319

并联II型的第一级的分母系数是

1.0000-0.59760.6785

并联II型的第二级的分子系数是

00.34690.0155

并联II型的第二级的分母系数是

1.00000.08770.6601

并联II型的第一级的实际分子系数是

0-0.31780.0319

并联II型的第一级的实际分母系数是

1.0000-0.59760.6785

并联II型的第二级的实际分子系数是

00.34690.0155

并联II型的第二级的实际分母系数是

1.00000.08770.6601

Q8.7

%ProgramP8_2

clearall;clc;

x1=[1zeros(1,6)];%产生单位冲激序列

q3old=0;q2old=0;q1old=0;%初始条件

%输入滤波器系数

D1=0.357377;D2=0.27083;D3=-0.2;

alpha1=0.02;alpha2=0.352;

alpha3=0.276533;alpha4=-0.19016;

%计算前七个冲激响应样本

forn=1:

7

w3=x1(n)-D3*q3old;

w2=w3-D2*q2old;

q1new=w2-D1*q1old;

q2new=D1*q1new+q1old;

q3new=D2*w2+q2old;

y1=D3*w3+q3old;

yo(n)=alpha1*y1+alpha2*q3new+alpha3*q2new+alpha4*q1new;

q3old=q3new;q2old=q2new;q1old=q1new;

end

[num,den]=strucver(yo,3);

disp('分子系数');disp(num');

disp('分母系数');disp(den');

运行结果

分子系数

-0.00000.44000.36000.0200

分母系数

1.00000.40000.1800-0.2000

Q8.9

%ProgramP8_3

%一个无限冲激响应滤波器滤波的说明

clearall;clc;clf;

%产生输入序列

k=0:

50;

w2=0.7*pi;w1=0.2*pi;

x1=1.5*cos(w1*k);x2=2*cos(w2*k);

x=x1+x2;

%确定滤波器传输函数

[N,Wn]=ellipord(0.25,0.55,0.5,50)

[num,den]=ellip(N,0.5,50,Wn);

%产生输出序列

y=filter(num,den,x);

%画出输入及输出序列

subplot(2,2,1);

stem(k,x1);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列中的低频成分');

subplot(2,2,2);

stem(k,x2);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列中的高频成分');

subplot(2,2,3);

stem(k,x);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列');

subplot(2,2,4);

stem(k,y);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输出序列');

运行结果

N=4Wn=0.2500

%ProgramP8_3

%一个无限冲激响应滤波器滤波的说明

clearall;clc;clf;

%产生输入序列

clearall;clc;clf;

k=0:

50;

w2=0.7*pi;w1=0.2*pi;

x1=1.5*cos(w1*k);x2=2*cos(w2*k);

x=x1+x2;

%确定滤波器传输函数

[N,Wn]=ellipord(0.55,0.25,0.5,50)

[num,den]=ellip(N,0.5,50,Wn,'high');

%产生输出序列

y=filter(num,den,x);

%画出输入及输出序列

subplot(2,2,1);

stem(k,x1);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列中的低频成分');

subplot(2,2,2);

stem(k,x2);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列中的高频成分');

subplot(2,2,3);

stem(k,x);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输入序列');

subplot(2,2,4);

stem(k,y);grid;axis([050-44]);

xlabel('时间序列n');ylabel('振幅');

title('输出序列');

运行结果

N=4Wn=0.5500

Q8.14

%ProgramP8_4

clearall;clc;

num=remez(9,[00.30.51],[1100]);

disp('滤波器系数是');disp(num);

impres=filter(num,1,[1zeros(1,9)]);

disp('滤波器实际系数是');disp(impres);

程序运行结果

滤波器系数是

-0.0209-0.09260.00640.19320.37210.37210.19320.0064-0.0926-0.0209

滤波器实际系数是

-0.0209-0.09260.00640.19320.37210.37210.19320.0064-0.0926-0.0209

Q8.15

%ProgramP8

clearall;clc;

num=remez(9,[00.30.51],[1100]);

disp('滤波器系数是');disp(num);

impres=direct2(num,1,[1zeros(1,9)]);

disp('滤波器实际系数是');disp(impres);

运行结果

滤波器系数是

-0.0209-0.09260.00640.19320.37210.37210.19320.0064-0.0926-0.0209

滤波器实际系数是

-0.0209-0.09260.00640.19320.37210.37210.19320.0064-0.0926-0.0209

Q8.16

%ProgramP8

clearall;clc;

num=remez(9,[00.30.51],[1100]);

den=[1zeros(1,length(num)-1)];

[z,p,k]=tf2zp(num,den);

sos=zp2sos(z,p,k)

%size(sos,1)为sos的行数,代表级数

%size(sos,2)为sos的列数

N=length(nu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1