离散系统的冲激响应、卷积和
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、实验项目名称:离散系统的冲激响应、卷积和
三、实验原理:
在离散时间情况下,最重要的是线性时不变(LTI )系统。线性时不变系统的输入输出关系可通过冲激响应][n h 表示
∑∞
-∞=-=
*=k k n h k x n h n x n y ][][][][][ 其中*表示卷积运算,MATLAB 提供了求卷积函数conv ,即
y =conv(x,h)
这里假设x [n ]和h [n ]都是有限长序列。如果x [n ]仅在1-+≤≤x x x N n n n 区间内为非零,而h [n ]仅在1-+≤≤h h h N n n n 上为非零,那么y [n ]就仅在
2)()(-+++≤≤+h x h x h x N N n n n n n
内为非零值。同时也表明conv 只需要在上述区间内计算y [n ]的1-+h x N N 个样本值。需要注意的是,conv 并不产生存储在y 中的y [n ]样本的序号,而这个序号是有意义的,因为x 和h 的区间都不是conv 的输入区间,这样就应负责保持这些序号之间的联系。
filter 命令计算线性常系数差分方程表征的因果LTI 系统在某一给定输入时的输出。具体地说,考虑一个满足下列差分方程的LTI 系统:
∑∑==-=-M
m m N k k m n x b k n y a
00][][ 式中x [n ]是系统输入,y [n ]是系统输出。若x 是包含在区间1-+≤≤x x x N n n n 内x [n ]的一个MATLAB 向量,而向量a 和b 包含系数k a 和k b ,那么
y=filter(b,a,x)
就会得出满足下面差分方程的因果LTI 系统的输出:
∑∑==-+=-+M
m N k m n x m b k n y k a 00][)1(][)1(
注意,k a k a =+)1(和m b m b =+)1(,因为MATLAB 要求所有的向量序号都从1
开始。例如,为了表示差分方程]1[3][]1[2][--=-+n x n x n y n y 表征的系统,就应该定义a=[1 2] 和 b =[1 -3]。 由filter 产生的输出向量y 包含了y [n ]在与向量x 中所在样本同一区间上的样本,即1-+≤≤x x x N n n n ,以使得两个向量x 和y 中都包含了x N 个样本。
四、实验目的:加深对离散系统冲激响应、卷积和分析方法的理解。
五、实验内容:
实验内容(一)、使用实验仿真系统(略)
实验内容(二)、MATLAB 仿真
六、实验器材(设备、元器件):计算机、MATLAB 软件。
七、实验步骤:
1、考虑有限长信号
1,05[]0,n x n n ≤≤⎧=⎨⎩其余 ,05[]0,n n h n n
≤≤⎧=⎨⎩其余 (a) 首先用解析方法计算[][]*[]y n x n h n =。
(b) 接下来利用conv 计算[][]*[]y n x n h n =的非零样本值,并将这些样本存 入向量y 中。构造一个标号向量ny ,对应向量y 样本的序号。
用stem(ny ,y )画出这一结果。验证其结果与(a )是否一致。
2、对以下差分方程描述的系统
]2[2]1[][5.0][-+-+=n x n x n x n y
][2]1[8.0][n x n y n y +-=
]1[2]1[8.0][-=--n x n y n y
分别利用filter 计算出输入信号][][n nu n x =在41≤≤n 区间内的响应y [n ]。
八、实验数据及结果分析:
1、利用conv 计算[][]*[]y n x n h n =的非零样本值
Matlab 程序源代码:
a=[ones(1,6)];
h=[0,1,2,3,4,5];
y=conv(a,h);
m=length(y)-1;
ny=0:1:m;
stem(ny,y,'fill');grid on;
xlabel('Time index n');ylabel('Conversation y')输出图像:
2、利用filter计算出输入信号]
x=在4
nu
n
]
[n
[
≤n区间内的响应y[n]
1≤
Matlab 程序源代码:
n
x
=n
+
n
-
y如下:
x
n
x
]
]1
2
[
+
[
]2
[-
[
]
5.0
a1=[0.5,1,2];
b1=[1];
n=1:4;
x1=[1 zeros(1,3)];
y1=filter(a1,b1,x1);
stem(n,y1,'fill');
title('y[n]=0.5x[0]+x[n-1]+2x[n-2]');
xlabel('x');ylabel('y');
输出图像:
y
]
n
y+
=如下:
-
x
n
[n
[
]1
2
]
8.0
[
a2=[2];
b2=[1,-0.8];
n=1:4;
x2=[1 zeros(1,3)];
y2=filter(a2,b2,x2);
stem(n,y2,'fill');
title('y[n]=0.8y[n-1]+2x[n]');
xlabel('x');
ylabel('y');
输出图像:
x
-n
-
n
y如下:
=
y
n
8.0
[
]1
2
]1
]
[
[-