数字信号处理实验一

  • 格式:doc
  • 大小:301.46 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 离散时间信号分析 班级 信息131班 学号 201312030103 姓名 陈娇 日期

一、实验目的

掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。

二、实验原理

1.序列的基本概念

离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为+∞<<∞-n 的整数,n 取其它值)(n x 没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t x a 进行等间隔采样,采样间隔为T ,得到)}({nT x a 一个有序的数字序列就是离散时间信号,简称序列。

2.常用序列

常用序列有:单位脉冲序列(单位抽样))

(n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。

3.序列的基本运算

序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。

4.序列的卷积运算

∑∞-∞==-=

m n h n x m n h m x n y )(*)()()()(

上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。

(1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。

(2)移位:将)(m h -移位n ,得)(m n h -。当n 为正数时,右移n 位;当n 为负数时,左移n 位。

(3)相乘:将)(m n h -和)(m x 的对应点值相乘。

(4)求和:将以上所有对应点的乘积累加起来,即得)(n y 。

三、主要实验仪器及材料

微型计算机、Matlab6.5 教学版、TC 编程环境。

四、实验内容

(1)用Matlab 或C 语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序;

(2)画出两个序列运算以后的图形;

(3)对结果进行分析;

(4)完成实验报告。

五、实验结果

六、实验总结

1.用Matlab 编制两个序列的相加

例1:序列a=[1,-1,3,2,0,-3],序列b=[2,3,-1,2,1,-2],求两序列之和。

序列a与序列b相加的加法的程序:

a=[1,-1,3,2,0,-3];

b=[2,3,-1,2,1,-2];

sum=a+b;

m=length(sum)-1;

n=0:1:m;

stem(n,sum); %绘制二维离散数据的火柴杆图

序列a与序列b相加后的图形为:

结果分析:通过上图可知,序列a与序列b相加的和sum=[3,2,2,4,1,-5]。理论计算序列a与序列b的和为sum1=[3,2,2,4,1,-5]。其与实验值相同,说明实验结果无误,代码正确。

2.用Matlab 编制两个序列的相乘

例2:仍旧以例1中的序列为例,求两个序列的乘积。

序列a与序列b相乘的乘法的程序:

a=[1,-1,3,2,0,-3];

b=[2,3,-1,2,1,-2];

mul=a.*b;

m=length(mul)-1;

n=0:1:m;

stem(n,mul);

序列a与序列b相乘后的图形:

分析结果:通过上图可知,序列a和序列b的乘积mul=[2,-3,-3,4,0,6],而理论值mul1=[2,-3,-3,4,0,6]。说明实验值跟理论值相同,代码正确。

3.用Matlab 编制两个序列的移位

例3:实现例1中序列的移位。

序列a与序列b的移位的代码:

a=[1,-1,3,2,0,-3];

b=[2,3,-1,2,1,-2];

yiwei=circshift(a,b); %circshift为循环移位函数%

m=length(yiwei)-1;

n=0:1:m;

stem(n,yiwei);

序列a与序列b的移位后的图像:

结果分析:通过上图可知移位的结果yiwei=[2,0,-3,1,-1,3],而理论移位结果yiwei1=[2,0,-3,1,-1,3]。实验值和理论值相同,说明实验结果正确,代码无误。

4.用Matlab 编制两个序列的反褶

例4:实现例1序列a的反褶。

序列a的反褶的代码:

a=[1,-1,3,2,0,-3];

m=length(a)-1;

n=0:-1:-m;

u=0:1:m;

stem(u,a,'-r');

stem(n,a);

序列a反褶前的图像:

序列a反褶后的图像:

结果分析:通过反褶前后图像的对比,说明序列反褶正确,代码无误。

5.用Matlab 编制两个序列的卷积

例5:求例1中序列a与序列b的卷积。

序列a与序列b的卷积的代码:

a=[1,-1,3,2,0,-3];

b=[2,3,-1,2,1,-2];

juanji=conv(a,b);

m=length(juanji)-1;

n=0:1:m;

stem(n,juanji,'-r');

序列a与序列b卷积后的图像:

结果分析:两个序列卷积之后的理论值juanji1=[2,1,2,16,2,-5,0,-1,-10,-3,6]。实验值为:juanji =

Columns 1 through 10

2 1 2 16 2 -5 0 -1 -10 -3

Column 11

6

,其与理论值相同,实验结果正确,代码无误。