《数字信号处理》实验指导书(完整) - 图文

发布时间 : 星期日 文章《数字信号处理》实验指导书(完整) - 图文更新完毕开始阅读

图1-3 系统单位取样响应

1.2.3 离散时间信号的卷积和运算

由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为

?y(n)?x(n)*h(n)?m????x(m)h(n?m) (1-2)

可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。

MATLAB求离散时间信号卷积和的命令为conv,其语句格式为

y=conv(x,h)

其中,x与h表示离散时间信号值的向量;y为卷积结果。用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。

例如,利用MALAB的conv命令求两个长为4的矩形序列的卷积和,即

g(n)?[u(n)?u(n?4)]*[u(n)?u(n?4)],其结果应是长为7(4+4-1=7)的三角

序列。用向量[1 1 1 1]表示矩形序列,MATLAB源程序为

>>x1=[1 1 1 1]; >>x2=[1 1 1 1]; >>g=conv(x1,x2) g=

1 2 3 4 3 2 1

4

如果要绘出图形来,则利用stem命令,即

>>n=1:7;

>>stem(n,g,'fill'),grid on,xlabel('n')

程序运行结果如图1-4所示。

图1-4 卷积结果图

对于给定函数的卷积和,我们应计算卷积结果的起始点及其长度。两个时限序列的卷积和长度一般等于两个序列长度的和减1。

【实例1-3】 已知某系统的单位取样响应为h?n??0.8?u?n??u?n?8??,试

n用MATLAB求当激励信号为x(n)?u(n)?u(n?4)时,系统的零状态响应。

解:MATLAB中可通过卷积求解零状态响应,即x(n)*h(n)。由题意可知,描述h(n)向量的长度至少为8,描述x(n)向量的长度至少为4,因此为了图形完整美观,我们将h(n)向量和x(n)向量加上一些附加的零值。MATLAB源程序为

>>nx=-1:5; %x(n)向量显示范围(添加了附加的零值) >>nh=-2:10; %h(n)向量显示范围(添加了附加的零值) >>x=uDT(nx)-uDT(nx-4);

>>h=0.8.^nh.*(uDT(nh)-uDT(nh-8)); >>y=conv(x,h);

>>ny1=nx(1)+nh(1); %卷积结果起始点

>>%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2) >>%因此卷积结果的时间范围是将上述长度加上起始点的偏移值 >>ny=ny1+(0:(length(nx)+length(nh)-2));

5

>>subplot(311)

>>stem(nx,x,'fill'),grid on >>xlabel('n'),title('x(n)') >>axis([-4 16 0 3]) >>subplot(312)

>>stem(nh,h','fill'),grid on >>xlabel('n'),title('h(n)') >>axis([-4 16 0 3]) >>subplot(313)

>>stem(ny,y,'fill'),grid on

>>xlabel('n'),title('y(n)=x(n)*h(n)') >>axis([-4 16 0 3])

程序运行结果如图1-5所示。

图1-5 利用卷积和法求解系统的零状态响应

6

1.3 编程练习

1.

试用MATLAB命令求解以下离散时间系统的单位取样响应,并判断系统的稳定性。

(1)3y(n)?4y(n?1)?y(n?2)?x(n)?x(n?1)

5y(n)?6y(n?1)?10y(n?2)?x(n) 272. 已知某系统的单位取样响应为h?n??()n?u?n??u?n?10??,试用MATLAB

8求当激励信号为x(n)?u(n)?u(n?5)时,系统的零状态响应。

(2)附:

1. 单位取样序列

单位取样序列?(n),也称为单位冲激序列,定义为

?(n)???1?0(n?0)(n?0) (12-1)

要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0处是取确定的值1。在MATLAB中,冲激序列可以通过编写以下的impDT.m文件来实现,即

function y=impDT(n)

y=(n==0); %当参数为0时冲激为1,否则为0

调用该函数时n必须为整数或整数向量。

【实例2-1】 利用MATLAB的impDT函数绘出单位冲激序列的波形图。 解:MATLAB源程序为

>>n=-3:3; >>x=impDT(n);

>>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1])

7

联系合同范文客服:xxxxx#qq.com(#替换为@)