数字信号处理课程设计离散时间信号的运算及其编程实现_第1页
数字信号处理课程设计离散时间信号的运算及其编程实现_第2页
数字信号处理课程设计离散时间信号的运算及其编程实现_第3页
数字信号处理课程设计离散时间信号的运算及其编程实现_第4页
数字信号处理课程设计离散时间信号的运算及其编程实现_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学信号分析与处理课程设计说明书课程设计任务书学生姓名: 专业班级: 电信1306班 指导教师: 工作单位: 信息工程学院 课程设计名称:信号分析与处理课程设计课程设计题目:离散时间信号的运算及其编程实现初始条件:1. Matlab软件;2. 课程设计辅导资料:“Matlab语言基础及使用入门”、“信号与系统”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;3. 先修课程:信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 课程设计时间:1周;2. 课程设计内容

2、:离散时间信号的运算及其编程实现,具体包括:序列的相加、相乘、合成、截取和各种移位运算等;3. 本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结,按要求进行实验演示和答辩等;4. 课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括: 目录; 与设计题目相关的理论分析、归纳和总结; 与设计内容相关的原理分析、建模、推导、可行性分析; 程序设计框图、程序代码(含注释)、程

3、序运行结果和图表、实验结果分析和总结; 课程设计的心得体会(至少500字); 参考文献(不少于5篇); 其它必要内容等。时间安排:1周指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘要离散时间信号是指信号在时间上是离散的,只在某些不连续的时刻给出信号的值,而其它时间则没有定义。为了便于数字系统的接受、处理,需要对信号进行数字化处理,即出现了时间上离散,幅度上量化的信号。在离散时间系统中,信号用序列表示。有一些常见的典型序列,我们时刻都需要用到,同时需要掌握的还有序列的一些运算。MATLAB在数值计算、符号运算、数据可视化、数字文件图形处理等方面有杰出优势,所以,我们需要了解常

4、见序列的MATLAB实现,以及序列运算的MATLAB实现。 关键词:离散时间信号,序列运算,编程实现目录1 MATLAB概述31.1 MATLAB简介31.2 MATLAB的应用及特点31.3 数字信号处理的特点32 理论分析52.1 Matlab表示序列52.2常用典型序列52.2.1单位阶跃序列52.2.2矩形序列52.2.3实数指数序列62.2.4复数指数序列62.2.5周期序列62.3序列的运算72.3.1信号的加减72.3.2 信号的乘除72.3.3 移位82.3.4 周期延拓83 课程设计内容93.1题一93.1.1理论分析93.1.2程序编程93.1.3结果显示103.1.4结果

5、分析103.2题二113.2.1理论分析113.2.2 矩形序列113.2.3复正弦序列133.2.4用矩形序列截取复正弦序列143.2.5结果分析153.3题三153.3.1理论分析163.3.2 sigshift函数的定义163.3.3x(n)和x(n-m)的程序代码及图示163.3.4的生成程序及图示173.3.5的生成程序及图示193.3.6结果分析204.心得体会215.参考文献22离散时间信号的运算及其编程实现1 MATLAB概述1.1 MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互

6、式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。1.2 MATLAB的应用及特点M

7、ATLAB以矩阵作为基本编程单元,它提供了各种矩阵的运算与操作,并有较强的绘图功能。MATLAB集科学计算、图像处理、声音处理于一身,是一个高度的集成系统,有良好的用户界面,并有良好的帮助功能。MATLAB不仅流行于控制界,在机械工程、生物工程、语音处理、图像处理、信号分析、计算机技术等各行各业中都有极广泛的应用。MATLAB语言的特点:1编程效率高;2用户使用方便;3扩充能力强;4语句简单,内涵丰富;5高效方便的矩阵和数组运算;6.方便的绘图功能。1.3 数字信号处理的特点数字信号处理的主要对象是数字信号,且是采用运算的方法达到处理目的,因此,其实现方法不同于模拟信号的实现方法,基本上可以分

8、为两种实现方法,即软件实现方法和硬件实现的方法。而硬件实现指的是选用合适的DSP芯片,配有适合芯片语言及任务要求的软件,实现某种信号处理功能的一种方法。数字信号处理的特点:1.灵活性;2.高精度和高稳定性;3.便于大规模集成;4.对数字信号可以存储、运算;5系统可以获得高性能指标。2 理论分析2.1 Matlab表示序列 Matlab中,可采用向量表示序列,由于Matlab中对序列下标默认为从1开始递增,因此要表示离散信号,一般应采用两个向量分别对信号的自变量和因变量进行描述。如, n= -34,在MATLAB中表示为:>> n = -3,-2,-1,0,1,2,3,4; %自变量

9、取值>> x = 2,1,-1,0,1,4,3,7; %因变量取值2.2常用典型序列2.2.1单位阶跃序列 (2.1)在区间的值,Matlab中可用下列表达式描述:n=n1:n2; (2.2)x=(n-n0)>=0; (2.3)2.2.2矩形序列 (2.4)矩形序列有一个重要的参数,就是序列宽度N。与之间的关系为: (2.5)2.2.3实数指数序列 (2.6)例如要实现序列,Matlab中可用下列表达式描述:n=0:10; (2.7) x=(0.9).n; (2.8)2.2.4复数指数序列复指数序列定义为 (2.9)当时,得到虚指数序列,式中是正弦序列的数字域频率。由欧拉公式

10、知,复指数序列可进一步表示为 (2.10)与连续复指数信号一样,我们将复指数序列实部和虚部的波形分开讨论,得出如下结论:(1)当时,复指数序列的实部和虚部分别是按指数规律增长的正弦振荡序列;(2)当时,复指数序列的实部和虚部分别是按指数规律衰减的正弦振荡序列;(3)当时,复指数序列即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列。例如要实现序列,Matlab中可用下列表达式描述:n=0:10; (2.11) x=exp(2+3j)*n); (2.12)2.2.5周期序列周期为N,长度为L(L=P*N)的周期序列可视为信号复制P次后产生的结果。Matlab中可用下列两种方法表示:法1:法2:

11、 %产生P列x;x是一个行向量 %长的列向量 %长的行向量2.3序列的运算2.3.1信号的加减Matlab中可用算术运算符“+”和“-”分别实现序列的加法和减法运算,此时两序列的长度必须相等,否则需通过补零法改变信号的长度。例:序列x1(n)、x2(n) ,长度分别为 n1 和n2,其求和的Matlab代码为:n=min(min(n1),min(n2):max(max(n1),max(n2); %y(n)的长度y1=zeros(1,length(n);y2=y1; %初始化(产生1行*length(n)列的零值)y1(find(n>=min(n1)&(n<=max(n1)=

12、1)=x1; %具有y(n)的长度的x1y2(find(n>=min(n2)&(n<=max(n2)=1)=x2; %具有y(n)的长度的x2y=y1+y2; %序列相加说明: 函数min (n)可获取向量n的最小值,函数max (n) 则获取向量n的最大值。函数length (n)可取得向量n的长度。函数find(n>a)&(n<b)可获取向量n在范围a<n<b内的取值。2.3.2 信号的乘除Matlab中两序列对应值的乘、除可分别采用点乘“.* ”和点除“. /”运算符,运算时两序列的长度需相等,具体处理方法和序列求和差时的一致。例:序列

13、x1(n)、x2(n) ,长度分别为 n1 和n2,其求积的MATLAB代码为:n=min(min(n1),min(n2):max(max(n1),max(n2); %y(n)的长度y1=zeros(1,length(n);y2=y1; %初始化(产生1行*length(n)列的零值)y1(find(n>=min(n1)&(n<=max(n1)=1)=x1; %具有y(n)的长度的x1y2(find(n>=min(n2)&(n<=max(n2)=1)=x2; %具有y(n)的长度的x2y=y1.*y2; %序列相乘2.3.3 移位序列x (n) 的移位操

14、作不影响向量x,只需对向量n的每个元素加或减去一个移位值。如移位序列y(n)=x(n-n0)等价为y(n+n0)=x(n),对应的Matlab语句为:n=n+n0; (2.13)y=x; (2.14)2.3.4 周期延拓如果对于所有的n,序列满足: (2.15)则称为周期序列。满足上述关系的最小N称为基本周期。用Matlab把一个周期序列x(n),0<n<N-1,拓展为有K个周期的序列xtide(n)一般有两种方法。简单复制法:设x是一个已赋值的行向量,其长度为N=length(x),把它复制K次,得到的x1长度为K*N。因此有,x1=X,X,X;nx1=0:K*N-1。这个方法在

15、K太大时容易数错,不是很好。余函数mod法:函数n1=(n mod N)。这个算式把大于等于N的n值,减去N的整倍数,使余数n1在0与N-1之间。对于小于等于0的n值,则加以N的整倍数。也使n1在0与N-1之间。把这一运算用到位置向量上,就可以方便的实现有限序列的周期延拓。先设置位置向量,要复制K个x,则新向量的长度应为K*N。其中N为x的长度,也就是所取的周期。假如起始位置为0,则可用下列语句:nx1=0:K*N-1; %设置延拓序列的位置向量x1=x(mod(nx1,N)+1) %确定位置向量各点对应的x值3 课程设计内容3.1题一给出两个序列和,x1=0,1,2,3,4,3,2,1,0;

16、 n1=-2:6;x2=2,2,0,0,0,-2,-2, n2=2:8。试求它们的和及乘积。3.1.1理论分析序列相加指两个不同序列,在同一时刻n,对幅度进行叠加。序列相乘指在同一时刻n,对不同的两个序列做幅度乘法运算。序列相加、相乘是对应序列值之间的相加、相乘。MATLAB中可以用符号“+”、“.*”来实现序列的相加、相乘,但是要求序列的长度必须相等,否则需要通过补零来改变序列的长度。3.1.2程序编程x1=0,1,2,3,4,3,2,1,0; n1=-2:6; x2=2,2,0,0,0,-2,-2; n2=2:8; n=min(min(n1),min(n2):max(max(n1),max

17、(n2); y1=zeros(1,length(n); y2=y1; y1(find(n>=min(n1)&(n<=max(n1)=1)=x1; y2(find(n>=min(n2)&(n<=max(n2)=1)=x2; y3=y1+y2; y4=y1.*y2; subplot(2,2,1),stem(n1,x1),axis(-5,10,0,5)title('x1序列 电信1306班陈雪燕'),xlabel('n1'),ylabel('x(n1)'); subplot(2,2,2), stem(n2,x2)

18、,axis(-5,10,-3,3)title('x2序列'),xlabel('n2'),ylabel('x(n2)'); subplot(2,2,3), stem(n,y3),axis(-5,10,-3,7)title('x1与x2的和'),xlabel('n'),ylabel('y3'); subplot(2,2,4), stem(n,y4),axis(-5,10,0,9)title('x1与x2的乘积'),xlabel('n'),ylabel('y4

19、9;); 3.1.3结果显示图3.1 题一的结果显示3.1.4结果分析序列x1和x2的长度是不同的,首先确定运算之后的长度,min(n)与max(n)函数可获取向量n的最小值和最大值,通过程序,可得序列范围为-2到8,再将原序列x1和x2变为具有新序列长度的x1和x2,最后,在进行序列的相加、相乘。程序运行结果如图3.1所示。3.2题二编写产生矩形序列的程序。序列起点为,矩形序列起点为,长度为(其中,由键盘输入),并用它截取一个复正弦序列,最后画出波形。3.2.1理论分析首先,需要设计一个矩形序列,矩形序列与单位阶跃序列的关系为: (3.1)在MATLAB中可以通过逻辑关系表达式产生,其产生方

20、式为:x=(n-n1)>=0)&(n-n2)<=0);其中n1,n2表示取值区间的范围,由这两个值可以确定该矩形序列的长度,公式为:N=n2-n1+1 (3.2)第二,设计一个复正弦序列,对于序列,在MATLAB中,可以用n=0:10; alpha=(pi/8)*j; x=exp(alpha*n);来实现。在本次设计中,将该复正弦序列的是不与虚部分开显示,便于观察。第三,实现序列的截取,序列的合成与截取相当于序列的相加与相乘。3.2.2 矩形序列3.2.2.1设计代码%m-file,juxing n0=input('输入序列起点n0='); n1=input

21、('输入矩形序列起点n1='); N=input('输入矩形序列长度N='); n=n0:10; x=(n-n1)>=0)&(n-N-n1+1)<=0); stem(n,x),axis(0,10,0,1);title('矩形序列 电信1306班陈雪燕'); 3.2.2.2相关数据键入及结果图3.2 矩形序列相关数据的输入根据设计要求,序列起点、矩形序列起点及长度要求键盘输入,所以利用input函数实现键盘输入,本段代码将主代码放倒M文件中,只需要进行调用即可获得所需的矩形序列。矩形序列结果如下:图3.3 矩形序列展示3.2.3

22、复正弦序列3.2.3.1设计代码n=0:20; alpha=(pi/8)*j; x=exp(alpha*n); real_x=real(x); image_x=imag(x); subplot(2,1,1),stem(n,real_x),axis(0,20,-2,2)xlabel('n'),ylabel('real(x)') ; title('实部 电信1306班陈雪燕'); subplot(2,1,2),stem(n,image_x),axis(0,20,-2,2)xlabel('n'),ylabel('imag(x)&

23、#39;) ; title('虚部'); 3.2.3.2结果展示图3.4 复正弦序列结果展示3.2.4用矩形序列截取复正弦序列3.2.4.1设计代码%m-file,jie n0=input('输入序列起点n0='); n1=input('输入矩形序列起点n1='); N=input('输入矩形序列长度N='); n=0:20; x1=(n-n1)>=0)&(n-N-n1+1)<=0); alpha=(pi/8)*j; x2=exp(alpha*n); y=x1.*x2; real_y=real(y);image

24、_y=imag(y); subplot(2,1,1),stem(n,real_y),axis(0,20,-2,2)title('实部 电信1306班陈雪燕'); subplot(2,1,2),stem(n,image_y),axis(0,20,-2,2)title('虚部'); 3.2.4.2相关数据键入及结果图3.5 序列的相关数据的输入图3.6 截取后的最终波形展示3.2.5结果分析由实验结果可知,矩形序列范围为3到7,所截取之后的结果也变为了3到7,序列的截取相当于序列相乘,在代码中,是通过相乘来实现截取的。3.3题三已知,利用MATLAB生成并图示 表示

25、以8周期的延拓)和,其中,为一个整常数,。3.3.1理论分析序列x(n)的移位操作不影响x的值,只需要对向量进行加、减运算,就可以实现对序列的移位操作。序列的周期延拓就是将某个区间上的序列拓展到整个区间上,在本次设计中,因为原序列长度为8,而又是以8为周期进行周期延拓,所以不会发生重叠现象。3.3.2 sigshift函数的定义图3.7 sigshift函数的定义3.3.3x(n)和x(n-m)的程序代码及图示n=0:10; N=8; x1=(n)>=0)&(n-N+1)<=0); x2=0.8.n; y=x1.*x2; m=5; y1,n1=sigshift(y,n,m)

26、; subplot(1,2,1),stem(n,y),axis(0,10,0,1)xlabel('n'), ylabel('y'),title('x(n) 电信1306班陈雪燕'); subplot(1,2,2),stem(n1,y1),axis(0,15,0,1)xlabel('n1'), ylabel('y1'),title('x(n-m) m=5'); 因为MATLAB中没有移位函数,所以需要先用M文件编写移位函数,只需要在主代码中直接调用移位函数即可实现移位。设计结果如下:图3.8 x(n)

27、和x(n-m)的生成图示3.3.4的生成程序及图示序列的周期延拓就是将某个区间上的序列拓展到整个区间上,y=x(mod(n,m)+1)可以实现对序列以m为周期的周期延拓,加1是因为MATLAB向量下标从1开始。原序列进行周期延拓代码及结果:n=0:25;N1=8; x1=(n)>=0)&(n-N1+1)<=0); x2=0.8.n; y=x2.*x1; y1=y(mod(n,8)+1);N2=24; y2=(n)>=0)&(n-N2+1)<=0); y3=y1.*y2; subplot(2,2,1),stem(n,y),axis(0,25,0,1)xla

28、bel('n'), ylabel('y'),title('原序列 电信1306班陈雪燕'); subplot(2,2,2),stem(n,y1),axis(0,25,0,1)xlabel('n'),ylabel('y1'),title('周期延拓序列'); subplot(2,2,3),stem(n,y2),axis(0,25,0,1)xlabel('n'), ylabel('y2'),title('矩形序列 N=24');subplot(2,2,4)

29、,stem(n,y3),axis(0,25,0,1)xlabel('n'), ylabel('y3'),title('最终结果');图3.9 的生成图示3.3.5的生成程序及图示n=0:25; N1=8; x1=(n)>=0)&(n-N1+1)<=0); x2=0.8.n; y=x1.*x2; m=6; y1,n1=sigshift(y,n,m); y2=y1(mod(n-m,8)+1);N2=24; y3=(n)>=0)&(n-N2+1)<=0);y4=y2.*y3; subplot(2,2,1),ste

30、m(n1,y1),axis(0,25,0,1)xlabel('n1'), ylabel('y1'),title('x(n-m) 电信1306班陈雪燕'); subplot(2,2,2),stem(n,y2),axis(0,25,0,1)xlabel('n'), ylabel('y2'),title('周期延拓序列'); subplot(2,2,3),stem(n,y3),axis(0,25,0,1)xlabel('n'), ylabel('y3'),title('矩形序列 N=24');subplot(2,2,4),stem(n,y4),axis(0,25,0,1)xlabel('n'), ylabel('y4'),title('最终结果');图3.10 的生成图示3.3.6结果分析4.心得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论