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

  • 格式:doc
  • 大小:698.50 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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. 已知离散时间系统的系统函数为

()4

3214

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')