搜索
您的当前位置:首页正文

数字信号处理matlab实验

来源:六九路网
数字信号处理实验报告(二)

一、 实验题目:常见离散信号的MATLAB 产生和图形显示

二、 实验目的:加深对离散系统的差分方程、冲激响应和卷积分

析方法的理解。 三、 实验原理:离散系统:

在MATLAB 中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。

四、实验内容:

编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。

y[n]0.75y[n 1]0.125y[n 2] x[n]x[n 1] y[n] 0.25{x[n 1]x[n 2]x[n 3]x[n 4]}

实验要求:给出理论计算结果和程序计算结果并讨论。

(一) y[n]0.75y[n 1]0.125y[n 2] x[n]x[n 1]

理论计算

对等式的两边取Z变换,移项得

Y(Z)Z2ZH(Z)X(Z)(Z1)(Z1)42

根据部分分式展开法和Z变换的性质共同求得

1n1n1n11n1h(n)[2()()]u(n)[2()()]u(n1)2424理论计算值为:

h(n)=

1.0000 -1.7500 1.1875 -0.6719 0.3555 -0.1826 0.0925 -0.0466 0.0234 -0.0117 0.0059 -0.0029 0.0015 -0.0007 0.0004 -0.0002 0.0001 0.0000

程序计算

程序:

>> clear;

>> n=[-20:20]; >> b=[1,-1];

>> a=[1,0.75,0.125];

>> x1=(n==0);

>> y1=filter(b,a,x1) y1 =

Columns 1 through 10

0 0 0 0 0

Columns 11 through 20

0 0 0 0 0

Columns 21 through 30

1.0000 -1.7500 0.0234 -0.0117

Columns 31 through 40

0.0059 -0.0029 0.0000 -0.0000 Column 41 0.0000

210-1-2 0 0 0 0 0

0 0 0 0 0

1.1875 -0.6719 0.3555 -0.1826 0.0925 -0.0466

0.0015 -0.0007 0.0004 -0.0002 0.0001 -0.0000

051015202530354045

阶跃响应: 程序:>> clear; n=[-20:20]; b=[1,-1];

a=[1,0.75,0.125]; x2=(n>=0);

>> y2=filter(b,a,x2) y2 =

Columns 1 through 10

0 0 0 0 0

Columns 11 through 20

0 0 0 0 0

Columns 21 through 30

1.0000 -0.7500 0.0078 -0.0039

Columns 31 through 40

0.0020 -0.0010 0.0000 -0.0000

Column 41

0.0000

10.50-0.5-1 0 0 0 0 0

0 0 0 0 0

0.4375 -0.2344 0.1211 -0.0615 0.0310 -0.0156

0.0005 -0.0002 0.0001 -0.0001 0.0000 -0.0000

051015202530354045

结论:经对比,理论计算值与程序计算值相同。

(二)y[n] 0.25{x[n 1]x[n 2]x[n 3]x[n 4]}

理论计算

对等式的两边取Z变换,移项得

H(Z)0.25(Z1Z2Z3Z4)

求z变换得

h(n)0.25[(n1)(n2)(n3)(n4)]

理论结果为当n=1,2,3,4时n为0.25,其余点n为0

u(n)h(n)dn0.25[u(n1)u(n2)u(n3)u(n4)]理论结果为当n=1,2,3,4时n为0.25,0.5,0.75,1其余点n为0

程序计算

冲激响应: 程序: >> clear; n=[-20:20];

b=[0.25,0.25,0.25,0.25]; a=[1]; x2=(n==0);

>> y2=filter(b,a,x2) y2 =

Columns 1 through 10

0 0 0 0 0 0 0 0 0 0 Columns 11 through 20

0 0 0 0 0 0 0 0 0 0 Columns 21 through 30

0.2500 0.2500 0.2500 0.2500 0 0 0 0 0 0

Columns 31 through 40

0 0 0 0 0 0 0 0 0 0 Column 41 0

0.250.20.150.10.050051015202530354045阶跃响应: clear;

n=[-20:20];

b=[0.25,0.25,0.25,0.25]; a=[1]; x2=(n>=0);

>> y2=filter(b,a,x2) y2 =

Columns 1 through 10

0 0 0 0 0

Columns 11 through 20

0 0 0 0 0

Columns 21 through 30

0.2500 0.5000 1.0000 1.0000

Columns 31 through 40

1.0000 1.0000 1.0000 1.0000

Column 41

1.0000

>> stem(y2,'filled')

0 0 0.7500 1.0000 1.0000 1.0000 0 0 0 0 1.0000 1.0000 1.0000 1.0000

0 0 0 0 1.0000 1.0000 1.0000 1.0000

10.80.60.40.20051015202530354045

四、 实验结论:

经对比验证,理论计算值与matlab程序计算值均一致。

五、 感想与体会

又这次实验,初步得体会到了matlab可以大大简化人类手工计算和查表的复杂度。个人觉得自己在matlab编程时还应注意加强理解,在脑中有数并且对仿真结果有初步的估计的情况下再进行编程。

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

Top