数字信号处理实验1--5含代码

实验一 离散时间信号的时域分析

1. 在MATLAB中利用逻辑关系式n??0来实现??n?n0?序列,显示范围n1?n?n2。(产生如下图所示的单位脉冲信号的函数为impseq(n0,n1,n2),程序如示例所示) 并利用impseq函数实现序列:y?n??2??n?3????n?6?;?3?n?10

x?n?1 nn1n2n0

源代码: impseq.m

function y=impseq(n0,n1,n2) n=[n1:n2] y=[(n-n0)==0]

exp01-1.m

function impseq(n0,n1,n2) n=-3:1:10

y=2*impseq(3,-3,10)+impseq(6,-3,10); stem(n,y)

2. 在MATLAB中利用逻辑关系式n??0来实现u?n?n0?序列,显示范围n1?n?n2。(自己编写产生单位阶跃信号的函数,函数命名为stepseq(n0,n1,n2))

并利用编写的stepseq函数实现序列:y?n??u?n?2??u?n?2??5?n?10 源代码:

stepseq.m

function y=stepseq(n0,n1,n2) n=n1:1:n2 y=[(n-n0)>=0] exp01-2.m

function stepseq(n0,n1,n2) n=-5:1:20

y=stepseq(-2,-5,20)+stepseq(2,-5,20) stem(n,y)

3. 在MATLAB中利用数组运算符“.^”来实现一个实指数序列。如:

x?n???0.3?n0?n?15

源代码:

n=0:1:15; x=0.3.^n stem(n,x)

4. 在MATLAB中调用函数sin或cos产生正余弦序列,如:

π??x?n??3sin?0.4πn???5cos?0.3πn?5??0?n?20

源代码:

n=0:1:20

x=11*sin(0.3*pi*n+pi/5)+5*cos(0.3*pi*n) stem(n,x)

思考题:

1.在MATLAB环境下产生单位脉冲序列和单位阶跃序列各有几种方法?如何使用?

2.在MATLAB环境下进行序列的相乘运算时应注意什么问题?

实验二 离散时间系统的时域分析

1. 在MATLAB中利用内部函数conv来计算两个有限长序列的卷积。给出两个序列,试求其卷积结果。

x?n???5,9,3,6,?8?y?n??x?n??h?n?源代码:

x=[5,9,3,6,-8]; h=[18,7,5,20,11,14,9]; n=[-4:6] y=conv(x,h) stem(n,y)

?3?n?1?1?n?5

h?n???18,7,5,20,11,14,9?运行结果: n =

-4 -3 -2 -1 0 1 2 3 4 5 6 y =

90 197 142 274 148 203 284 29 23 -58 -72

2. 在MATLAB中利用filter函数在给定输入和差分方程时求差分方程的解。给出如下差分方程:

y?n??0.9y?n?1??0.5y?n?2??x?n?

(1)计算并画出冲击响应h?n?,?10?n?10

(2)由此h?n?确定系统是否稳定。(稳定) 源代码:

b=[1];

a=[1,-0.9,0.5]; n=-10:50;

x=[zeros(1,10),1,zeros(1,10)]; y=filter(b,a,x); n=[-10:10] stem(n,y)

3. 已知系统单位脉冲响应为h?n??cos?0.5n??sin?0.2n?0?n?19,如果输入为

x?n??exp?0.2n?0?n?9,求利用conv函数求系统输出y?n?。

源代码:

n=[0:19]

h=cos(0.5*n)+sin(0.2*n) m=[0:9] x=exp(0.2*m) y=conv(x,h) stem(y)

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4