关于几个常见数字滤波器的设计.docx

上传人:b****8 文档编号:9169546 上传时间:2023-05-17 格式:DOCX 页数:63 大小:477.36KB
下载 相关 举报
关于几个常见数字滤波器的设计.docx_第1页
第1页 / 共63页
关于几个常见数字滤波器的设计.docx_第2页
第2页 / 共63页
关于几个常见数字滤波器的设计.docx_第3页
第3页 / 共63页
关于几个常见数字滤波器的设计.docx_第4页
第4页 / 共63页
关于几个常见数字滤波器的设计.docx_第5页
第5页 / 共63页
关于几个常见数字滤波器的设计.docx_第6页
第6页 / 共63页
关于几个常见数字滤波器的设计.docx_第7页
第7页 / 共63页
关于几个常见数字滤波器的设计.docx_第8页
第8页 / 共63页
关于几个常见数字滤波器的设计.docx_第9页
第9页 / 共63页
关于几个常见数字滤波器的设计.docx_第10页
第10页 / 共63页
关于几个常见数字滤波器的设计.docx_第11页
第11页 / 共63页
关于几个常见数字滤波器的设计.docx_第12页
第12页 / 共63页
关于几个常见数字滤波器的设计.docx_第13页
第13页 / 共63页
关于几个常见数字滤波器的设计.docx_第14页
第14页 / 共63页
关于几个常见数字滤波器的设计.docx_第15页
第15页 / 共63页
关于几个常见数字滤波器的设计.docx_第16页
第16页 / 共63页
关于几个常见数字滤波器的设计.docx_第17页
第17页 / 共63页
关于几个常见数字滤波器的设计.docx_第18页
第18页 / 共63页
关于几个常见数字滤波器的设计.docx_第19页
第19页 / 共63页
关于几个常见数字滤波器的设计.docx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

关于几个常见数字滤波器的设计.docx

《关于几个常见数字滤波器的设计.docx》由会员分享,可在线阅读,更多相关《关于几个常见数字滤波器的设计.docx(63页珍藏版)》请在冰点文库上搜索。

关于几个常见数字滤波器的设计.docx

关于几个常见数字滤波器的设计

实验一信号、系统及系统响应

1、编写常用信号的程序:

(1):

单位采样序列δ(n)。

程序如下:

function[x,n]=impseq(n0,ns,nf)

n0=0;

ns=-5;

nf=5;

n=[ns:

nf];

x=[(n-n0)==0]

stem(n,x)

grid

title('单位采样序列')

xlabel('n')

ylabel('x(n)')

运行结果如下:

 

(2):

单位阶跃序列u(n)。

程序如下:

function[x,n]=stepseq(n0,ns,nf)

n0=0;

ns=-5;

nf=5;

n=[ns:

nf];

x=[(n-n0)>=0]

stem(n,x)

grid

title('单位阶跃序列')

xlabel('n')

ylabel('u(n)')

运行结果如下:

(3):

单位矩形序列

程序如下:

function[x,n]=juxingseq(n0,ns,nf)

n0=4;

ns=0;

nf=9;

n=[ns:

nf];

x=[((n-ns)>=0)&((n-nf)<=0)]

stem(n,x)

grid

title('单位矩形序列')

xlabel('n')

ylabel('R(n)')

end

运行结果如下:

(4)正弦序列。

程序如下:

function[x,n]=sin(w,n)

w=0.2*pi;

n=(0:

0.2:

10);

x=sin(w*n);

stem(n,x)

title('正弦序列')

xlabel('n')

ylabel('x(n)')

运行结果如下:

 

 

(5):

 

程序如下:

functionx=exp(n)

n=(0:

0.0001:

0.01);

x=exp(-1000*abs(n))

stem(n,x,'.')

运行结果如下:

(6):

程序如下:

functionx=rs(n)

n=(0:

0.1:

10);

A=1;c=2;w=2*pi;

x=A*exp(-c*n).*sin(w*n)

stem(n,x,'.')

运行结果如下:

2、认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法。

(1)观察并分析采用不同频率时,对函数

的频谱影响。

(a):

,对其进行采样得到

  (b):

,对其进行采样得到

(c):

采用理想内插函数重建原始信号

程序如下:

functionx=exp(n)

n1=(0:

0.0002:

0.01);

x=exp(-1000*abs(n1))

subplot(2,1,1)

stem(n1,x,'.')

gridon

n2=(0:

0.001:

0.01);

x=exp(-1000*abs(n2))

subplot(2,1,2)

stem(n2,x,'.')

gridon

 

运行结果如下:

(2)实现两序列的卷积。

利用y=conv(x,h).例如:

求解

试求:

程序如下:

x=[5,9,3,6,-8];

h=[18,7,5,20,11,14,9];

y=conv(x,h)

n=-4:

6;

stem(n,y,'b')

holdon

gridon

运行结果如下:

(3)系统单位脉冲响应序列产生子程序。

本实验要用到两种FIR系统。

a.ha(n)=R10(n);

b.hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)

hb(n)信号的程序如下:

function[x,n]=impseq(n0,ns,nf)

n0=0;

ns=-5;

nf=5;

n=[ns:

nf];

x0=[(n-n0)==0]

x1=2.5*[(n-1)==0]

x2=2.5*[(n-2)==0]

x3=[(n-3)==0]

x=x0+x1+x2+x3

stem(n,x)

grid

title('单位采样序列')

xlabel('n')

ylabel('x(n)')

运行结果如下:

3.时域离散信号、系统和系统响应分析。

观察信号xb(n)和系统hb(n)的时域和频域特性;利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n),比较所求响应y(n)和hb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果。

b.观察系统ha(n)对信号xc(n)的响应特性。

程序如下:

w=(-3*pi:

0.001:

3*pi)+eps;

Xa=1;

Xb=1+2.5*exp(-j*w)+2.5*exp(-2*j*w)+exp(-3*j*w);

subplot(2,1,1)

plot(w/pi,abs(Xa),'b')

xlabel('w/pi')

ylabel('|Xa|')

title('Xa频域特性')

holdon

gridon

subplot(2,1,2)

plot(w/pi,abs(Xb))

xlabel('w/pi')

ylabel('|Xb|')

title('Xb频域特性')

holdon

gridon

运行结果如下:

 

程序如下:

function[x,n]=impseq(n0,ns,nf)

n0=0;

ns=0;

nf=3;

n1=[ns:

nf];

x0=[(n1-n0)==0];

xb=[(n1-n0)==0];

x1=2.5*[(n1-1)==0];

x2=2.5*[(n1-2)==0];

x3=[(n1-3)==0];

hb=x0+x1+x2+x3;

y=conv(xb,hb)

n=0:

6;

stem(n,y,'b')

grid

title('线性卷积')

xlabel('n')

ylabel('y(n)')

运行结果如下:

通过观察响应的y(n)和hb(n)的时域及频域特性,发现两者的时域及频域特性完全相同,说明hb(n)和单位抽样响应相卷积得到的还是hb(n)本身。

用数学表达式为y(n)=hb(n)*δ(n)=hb(n)。

 

b.程序如下:

function[x,n]=juxingseq(n0,ns,nf)

n0=4;

ns=0;

nf=9;

n=[ns:

nf];

x=[((n-ns)>=0)&((n-nf)<=0)]

y=conv(x,x)

n=0:

18;

stem(n,y)

 

运行结果如下:

系统ha(n)对信号xc(n)的响应特性:

对时域进行采样,频域发生周期延拓。

思考题

在分析理想采样序列特性的实验中,采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同?

它们所对应的模拟频率是否相同?

为什么?

答:

采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量相同,

实验二用FFT作谱分析

1、复习DFT的定义、性质和用DFT作频谱分析的有关内容。

用matlab函数dfs(dft)和idfs(idft)实现dfs(dft)正反变换。

(1)function[Xk]=dfs(xn,N)

function[Xk]=dfs(xn,N)

n=0:

N-1;

k=0:

N-1;

WN=exp(-j*2*pi/N);

nk=n'*k;

Xk=xn*WN.^nk;

(2)function[xn]=idfs(Xk,N)

n=0:

N-1;

k=0:

N-1;

WN=exp(-j*2*pi/N);

nk=-n'*k;

Xk=xn*WN.^nk;

2、计算周期序列

的DFS.

N=16;

xn=[4567456745674567];

n=0:

N-1;

Xk=dfs(xn,N);

stem(n,abs(Xk))

ylabel('X(k)')

gridon

 

3、为了说明高密度频谱和高分辨率频谱之间的区别,考察序列x(n)有限个样本的频谱。

时,求x(n)的DFT.

时,求x(n)的DFT.

 

程序如下:

N=11;

xn=cos(0.48*pi*n)+cos(0.52*pi*n);

n=0:

N-1;

Xk=dfs(xn,N);

stem(n,abs(Xk))

xlabel('n');

ylabel('X(k)')

title('N=11')

gridon

 

运行结果如下:

N=101;

xn=cos(0.48*pi*n)+cos(0.52*pi*n);

n=0:

N-1;

Xk=dfs(xn,N);

stem(n,abs(Xk),'.')

xlabel('n');

ylabel('X(k)')

title('N=101')

gridon

4、利用矩阵相乘计算循环卷积。

计算其5点、6点、7点、8点、9点循环卷积。

并分析线性卷积与循环卷积的关系。

(1)自定义圆周移位函数cirshift.m

functiony=cirshift(x,m,N)

iflength(x)>N

error('N必须>=x的长度')

end

x=[xzeros(1,N-length(x))];

n=[0:

1:

N-1];

n=mod(n-m,N);

y=x(n+1);

(2)自定义圆周卷积函数

functiony=circonvt(x1,x2,N)

%checkforlengthofx1

iflength(x1)>N

error('N必须>=x1的长度')

end

%checkforlengthofx2

iflength(x2)>N

error('N必须>=x2的长度')

end

x1=[x1zeros(1,N-length(x1))];

x2=[x2zeros(1,N-length(x2))];

m=[0:

1:

N-1];

x2=x2(mod(-m,N)+1);

H=zeros(N,N);

forn=1:

1:

N

H(n,:

)=cirshift(x2,n-1,N);

end

y=x1*H'

(3)命令窗口输入:

①5点圆周卷积

x1=[12345];

x2=[6789];

y=circonvt(x1,x2,5)

输出

y=

100958570100

②6点圆周卷积

x1=[12345];

x2=[6789];

y=circonvt(x1,x2,6)

输出:

y=

8264407010094

③7点圆周卷积

x1=[12345];

x2=[6789];

y=circonvt(x1,x2,7)

输出:

y=

511940701009476

④8点圆周卷积

x1=[12345];

x2=[6789];

y=circonvt(x1,x2,8)

输出:

y=

6194070100947645

⑤9点圆周卷积

x1=[12345];

x2=[6789];

y=circonvt(x1,x2,9)

输出:

y=

61940701009476450

6、编制信号产生子程序,产生以下典型信号供谱分析用:

(1)x1(n)=R4(n)

function[x,n]=juxingseq(n0,ns,nf)

n0=1.5;

ns=0;

nf=3;

n=[ns:

nf];

x=[((n-ns)>=0)&((n-nf)<=0)];

stem(n,x);

xlabel('采样时间n');

ylabel('单位矩形序列R4(n)');

title('单位矩形序列')

gridon

 

(2)

X2(n)=

function[x,n]=fenduan(n0,n1,n2,n3)

n0=0;n1=3;n2=4;n3=7;

n=[n0:

n1];

xn=n+1;

n_0=[n2:

n3];

xn_0=8-n_0;

stem(n,xn)

holdon

stem(n_0,xn_0)

xlabel('采样时间n');

ylabel('x2(n)');

gridon

 

(3)

X3(n)=

function[x,n]=fenduan1(n0,n1,n2,n3)

n0=0;n1=3;n2=4;n3=7;

n=[n0:

n1];

xn=4-n;

n_0=[n2:

n3];

xn_0=n_0-3;

stem(n,xn)

holdon

stem(n_0,xn_0)

xlabel('采样时间n');

ylabel('x3(n)');

gridon

(4)x4(n)=cosn

function[x,n]=cos(w,n)

w=pi/4;

n=(0:

0.4:

8);

x=sin(w*n);

stem(n,x)

xlabel('采样时间n');

ylabel('余弦序列x(n)');

title('余弦序列')

gridon

(5)x5(n)=sinn

function[x,n]=sin(w,n)

w=pi/8;

n=(0:

0.5:

16);

x=sin(w*n);

stem(n,x)

xlabel('采样时间n');

ylabel('正弦序列x(n)');

title('正弦序列')

gridon

 

(6)x6(t)=cos8t+cos16+cos

t=0:

0.005:

0.5;

xt=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);

plot(t,xt)

gridon

xlabel('时间t');

ylabel('x6(t)');

实验内容

(1)对2中所给出的信号逐个进行谱分析。

下面给出针对各信号的FFT变换

区间N以及对连续信号x6(t)的采样频率fs,供实验时参考。

x1(n),x2(n),x3(n),x4(n),x5(n):

N=8,

16=x6(t):

fs=64(Hz),N=16,32,64

①xn=[((n-0)>=0)&((n-3)<=0)];;

N=8;

fs=64;

D=2*pi*fs/N;

n=0:

N-1;

k=floor(-(N-1)/2:

(N-1)/2);

X=fftshift(fft(xn,N));

subplot(2,1,1);

plot(k*D,abs(X))

title('幅度频谱');

gridon

subplot(2,1,2);

plot(k*D,angle(X))

title('相位频谱');

gridon

N=8;

n=0:

N-1;

xn=fenduan();

fs=64;

D=2*pi*fs/N;

k=floor(-(N-1)/2:

(N-1)/2);

X=fftshift(fft(xn,N));

subplot(2,1,1);

plot(k*D,abs(X))

title('幅度频谱');

gridon

subplot(2,1,2);

plot(k*D,angle(X))

title('相位频谱');

gridon

N=8;

n=0:

N-1;

xn=fenduan1();

fs=64;

D=2*pi*fs/N;

k=floor(-(N-1)/2:

(N-1)/2);

X=fftshift(fft(xn,N));

subplot(2,1,1);

plot(k*D,abs(X))

title('幅度频谱');

gridon

subplot(2,1,2);

plot(k*D,angle(X))

title('相位频谱');

gridon

 

④xn=cos(pi/4*n);

N=8;

fs=64;

D=2*pi*fs/N;

n=0:

N-1;

k=floor(-(N-1)/2:

(N-1)/2);

X=fftshift(fft(xn,N));

subplot(2,1,1);

plot(k*D,abs(X))

title('幅度频谱');

gridon

subplot(2,1,2);

plot(k*D,angle(X))

title('相位频谱');

gridon

 

⑤N=8;

n=0:

N-1;

xn=sin(pi/8*n);

fs=64;

D=2*pi*fs/N;

k=floor(-(N-1)/2:

(N-1)/2);

X=fftshift(fft(xn,N));

subplot(2,1,1);

plot(k*D,abs(X))

title('幅度频谱');

gridon

subplot(2,1,2);

plot(k*D,angle(X))

title('相位频谱');

gridon

 

⑥N0=[163264];

forr=1:

3;

N=N0(r);

n=0:

N-1;

fs=64;T=1/fs;

xt=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);

D=2*pi*fs/N;

k=floor(-(N-1)/2:

(N-1)/2);

X=T*fftshift(fft(xn,N));

subplot(3,1,r);

plot(k*D,abs(X))

title('幅度频谱');

axis([-200,200,1.1*min(abs(X)),1.1*max(abs(X))]);

gridon

end

(2)令x(n)=x4(n)+x5(n),用FFT计算8点和16点离散傅里叶变换,

X(k)=DFT[x(n)]

N1=8;

N2=16;

N1=0:

N1-1;

n2=0:

N2-1;

xn=cos(pi/4*n)+sin(pi/8*n);

k1=0:

N1-1;

k2=0:

N2-1;

Xk1=fft(xn,N1);

Xk2=fft(xn,N2);

subplot(2,1,1);

stem(k1,abs(Xk1))

title('N=8');

gridon

subplot(2,1,2);

stem(k2,abs(Xk2))

title('N=16');

gridon

(3)令x(n)=x4(n)+jx5(n),重复

(2)。

N1=8;

N2=16;

n1=0:

N1-1;

n2=0:

N2-1;

xn1=cos(pi/4*n1)+j*sin(pi/8*n1);

xn2=cos(pi/4*n2)+j*sin(pi/8*n2);

k1=0:

N1-1;

k2=0:

N2-1;

Xk1=fft(xn1,N1);

Xk2=fft(xn2,N2);

subplot(2,1,1);

stem(k1,abs(Xk1))

title('N=8');

gridon

subplot(2,1,2);

stem(k2,abs(Xk2))

title('N=16');

gridon

思考题

在N=8时,x2(n)和x3(n)的幅频特性会相同吗?

为什么?

N=16呢?

答:

N=8,x2(n)和x3(n)8点DFT的模相等,故幅频特性会相同。

N=16时,x2(n)与x3(n)不满足循环移位关系,所以x2(n)和x3(n)16点DFT的模不相等,故幅频特性不相同。

实验三设计IIR数字滤波器

 

1、用Matlab语言分别设计巴特奥斯低通滤波器和切比雪夫低通滤波器,

其技术指标为:

通带截止频率

,通带最大衰减

阻带起始频率

,阻带最小衰减

要求:

求出他们的零点、极点、阶数、增益等,并画出图形作比较。

程序如下:

Wp=2*pi*5*10^3;Ws=2*pi*10^4;

rp=3;

rs=30;

wp=1;

ws=Ws/Wp;

[N,wc]=buttord(wp,ws,rp,rs,'s');

[z,p,k]=buttap(N);

[B,A]=zp2tf(z,p,k);

w=0:

0.05*pi:

2*pi;

[h,w]=freqs(B,A,w);

plot(w,20*log10(abs(h)),'r');

holdon

gridon

[N2,wc2]=cheb1ord(wp,ws,rp,rs,'s');

[z2,p2,k2]=cheb1ap(N2,rp);

[B2,A2]=zp2tf(z2,p2,k2);

[h2,w]=freqs(B2,A2,w);

plot(w,20*log10(abs(h2)),'b');

holdon

gridon

xlabel('频率/Hz')

ylabel('幅值')

 

运行结果如下:

零点、极点、阶数、增益如下:

巴特奥斯低通滤波器参数:

N=5

wc=1.0025

z=[]

p=

-0.3090+0.9511i

-0.3090-0.9511i

-0.8090+0.5878i

-0.8090-0.5878i

-1.0000

k=1

切比雪夫低通滤波器参数:

N2=4

wc2=1

z2=[]

p2=

-0.0852+0.9465i

-0.2056+0.3920i

-0.2056-0.3920i

-0.0852-0.9465i

k2=0.1253

2、切比雪夫低通滤波器,其技术指标为:

通带截止频率

,通带最大衰减

阻带起始频率

,阻带最小衰减

要求:

求出他们的零点、极点、阶数、增益等,并画出图形作比较。

程序如下:

 

Wp=2*pi*3*10^6;Ws=2*pi*12*10^6;

rp=0.1;

rs=60;

wp=1;

ws=Ws/Wp;

[N,wc]=buttord(wp,ws,rp,rs,'s');

[z,p,k]=buttap(N);

[B,A]=zp2tf(z,p,k);

w=0:

0.05*pi:

2*pi;

[h,w]=freqs(B,A,w);

plot(w,20*log10(abs(h)),'r');

holdon

gridon

[N2,wc2]=cheb1ord(wp,ws,rp,rs,'s');

[z2,p2,k2]=cheb1ap(N2,rp);

[B2,A2]=zp2tf(z2,p2,k2);

[h2,w]=freqs(B2,A2,w);

plot(w,20*log10(abs(h2)),'b');

holdon

gridon

xlabel('频率/Hz')

ylabel('幅值')

 

运行结果如下:

巴特奥斯

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2