内容发布更新时间 : 2024/11/16 20:54:22星期一 下面是文章的全部内容请认真阅读。
实验一 离散时间信号的时域分析
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)