数字信号处理实验1--5含代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 离散时间信号的时域分析
1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示围21n n n ≤≤。(产生如下图所
示的单位脉冲信号的函数为impseq(n0,n1,n2),程序如示例所示)
并利用impseq 函数实现序列:()()()632-+-=n n n y δδ;103≤≤-n
()
n x n 1
0n 2n 1n
源代码:
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 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示围21n n n ≤≤。(自己编写产生
单位阶跃信号的函数,函数命名为stepseq(n0,n1,n2))
并利用编写的stepseq 函数实现序列:()()()10522≤≤--++=n n u n u n y
源代码:
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 中利用数组运算符“.^”来实现一个实指数序列。如:
()()1503.0≤≤=n n x n
源代码:
n=0:1:15;
x=0.3.^n
stem(n,x)
4. 在MATLAB 中调用函数sin 或cos 产生正余弦序列,如:
()()200π3.0cos 55ππ4.0sin 3≤≤+⎪⎭⎫ ⎝⎛+=n n n n x
源代码:
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 来计算两个有限长序列的卷积。给出两个序列,试求其卷积结果。
()[]()[]
()()()
n h n x n y n n h n n x *=≤≤-=≤≤--=519,14,11,20,5,7,181
38,6,3,9,5 源代码:
x=[5,9,3,6,-8];
h=[18,7,5,20,11,14,9];
n=[-4:6]
y=conv(x,h)
stem(n,y)
运行结果:
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 函数在给定输入和差分方程时求差分方程的解。给出如下差分方程:
()()()()n x n y n y n y =-+--25.019.0
(1)计算并画出冲击响应()1010,≤≤-n n h
(2)由此()n h 确定系统是否稳定。(稳定)
源代码:
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. 已知系统单位脉冲响应为()()()1902.0sin 5.0cos ≤≤+=n n n n h ,如果输入为
()()902.0ex p ≤≤=n n n x ,求利用conv 函数求系统输出()n y 。
源代码:
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)
思考题:
1. 离散线性时不变系统中的差分方程和系统函数有何联系?公式中的系数在编写程序时须注意什么问题?
系统函数H(Z)=Y(Z)/X(Z),对差分方程进行Z 变换,由公式得系统函数。 由差分方程进行z 变换可以求得系统函数。公式中的系数应从低阶向高阶写,没有的项补零。公式中的系数在编写程序时须注意:y(n)的系数必须为1,注意不要落下潜在的0系数。
2. MATLAB 中提供的conv 卷积子函数使用中须满足什么条件?如果条件不满足应如何处理? conv 中卷积的子函数n 值是从零开始的,如果不满足此条件,需从新定义卷积结果的n 值围。
实验三 离散时间系统的频域分析
1. 已知离散时间系统函数为
()4
3214
3213.07.05.11.112.01.03.01.02.0--------+-+-++++=z z z z z z z z z H 求该系统的零极点(提示:可以用roots 实现);画出零极点分布图(提示:可以用zplane 实现);判断系统的因果、稳定性。
源代码:
b=[0.2 0.1 0.3 0.1 0.2];
a=[1 -1.1 1.5 -0.7 0.3];
z=roots(b);
p=roots(a);
zplane(b,a)
disp(z)
disp(p)
disp(abs(z))
disp(abs(p))
2. 已知离散时间系统的系统函数为
()43214
3213.07.05.11.112.01.03.01.02.0--------+-+-++++=z
z z z z z z z z H 求该系统在π~0频率围的幅频响应、相频响应。(提示:用freqz 、abs 和angle 实现) 源代码:
b=[0.2 0.1 0.3 0.1 0.2];
a=[1 -1.1 1.5 -0.7 0.3];
[h,w]=freqz(b,a);
hf=abs(h);
hx=angle(h);
subplot(211),plot(w,hf)
title('幅频响应')
xlabel('x')
ylabel('|X(e^jx)|')
subplot(212)
plot(w,hx)
title('相频响应')
xlabel('x')
3. 已知序列()[]301,2,4,8≤≤=n n x ,()[]700,0,0,0,1,2,4,8≤≤=n n g ,