资源描述:
《基于matlab的离散时间信号的时域分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于MATLAB的离散时间信号的时域分析摘要MATLAB目前已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图形处理系统、MATLAB数学函数库和MATLAB应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。本次课程设计则在深入研究离散时间信号的基础上,利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,利用MATLAB绘制单位脉冲序列、单位阶跃序列、正弦序列、实指数序列、复指数序列和矩形序列等常见序列的时域波形;利用MATLAB实现序列的常见运算,包括相加、相乘、数乘、时移、翻转、抽取和内插等,并绘制相应的
2、时域波形。关键词:MATLAB图形处理离散时间信号时域1MATLAB简介1.1MATLAB语言功能MATLAB是一个高精度的科学计算语言,它将计算、可视化编程结合在一个容易使用的环境中,在这个环境中,用户可以把提出的问题和解决问题的办法用熟悉的数学符号表示出来,它的典型使用包括:(1)数学和计算;(2)运算法则;(3)建模、仿真;(4)数值分析、研究和可视化;(5)科学的工程图形;(6)应用程序开发,包括创建图形用户接口。1.2MATLAB语言特点MATLAB是一个交互式系统,他的基本数据单元是数组,这个数组不要求固定的大小,因此可以让用户解决许多技术上的问题,特别是
3、那些包含矩阵和矢量运算的问题。MATLAB的指令表达与数学、工程中常用的习惯形式相似,与C、Fortran、等高级语言相比,它的语法规则更简单、表达更符合工程习惯,正因为如此,人们用MATLAB语言编写程序就犹如在便笺上书写公式和求解,因而MATLAB被称为“便笺式”的科学工程语言。MATLAB的最重要特征使他拥有解决特定应用问题的程序组,也就是TOOLBOX(工具箱),如信号处理工具箱,控制系统工具箱、神经网络工具箱、模糊逻辑工具箱、通信工具箱和数据采集工具箱等许多专用工具箱,对大多数用户来说,要想灵活、高效地运用这些工具箱,通常都需要学习相应的专业知识。此外,开放
4、性也许是MATLAB最重要和最受欢迎的特点之一。除内部函数外,所有的MATLAB主要文件和各工具箱文件都是可读的、可改的源文件,因为工具箱实际上是有一组复杂的MATLAB函数组成,用以解决待定的问题,因此用户可以通过对源文件进行修改和加入自己编写的文件去构建新的专用工具箱。2常用离散时间信号的时域波形2.1单位脉冲序列单位脉冲序列δ(n)其特点是仅在n=0处取值为1,n为其他值处均为零。它类似于模拟信号中的单位冲激函数δ(t)。解:MATLAB程序如下:n=-5:5;x=[zeros(1,5),1,zeros(1,5)];stem(n,x,'fill');gridon
5、调试生成的图形如图3.1:图2.1单位脉冲序列2.2单位阶跃序列单位阶跃序列u(n)定义为:单位阶跃序列的源程序:n=-30:30;un=[zeros(1,30),ones(1,31)];stem(n,un)时域波形图如下图:图2.2单位阶跃序列2.3正弦序列正弦序列定义为:其中,ω是正弦序列的数字域频率;Φ为初相。与连续的正弦信号不同,正弦序列的自变量n必须为整数。可以证明只有当为有理数时,正弦序列才具有周期性。下面利用MATLAB绘制正弦序列的波形图MATLAB源程序为:n=0:39;x=sin(pi/6*n);stem(n,x,'fill'),xlabel('n
6、'),gridontitle('正弦序列')axis([0,40,-1.5,1.5]);图形如下:图2.3正弦序列2.4实指数序列实指数序列定义为,其中n为正整数。下面利用MATLAB分别绘制实指数序列、,源代码及波形图如下:n=0:10;a1=1.2;a2=-1.2;x1=a1.^n;x2=a2.^n;subplot(221);stem(n,x1,'fill'),gridon;subplot(222);stem(n,x2,'fill'),gridon产生的波形图如下图:图2.4实指数序列2.5复指数序列复指数序列定义为当a=0时,得到虚指数序列,为正弦序列的数字域频
7、率。由欧拉公式知,复指数序列可进一步表示为:当a>0时,复指数序列x(n)的实部和虚部分别是按指数规律增长的正弦振荡序列;当a<0时,复指数序列x(n)的实部和虚部分别是按指数规律衰减的正弦振荡序列;当a=0时,复指数序列x(n)的实部和虚部分别是按指数规律等幅的正弦振荡序列下面用MATLAB绘制出复指数序列的实部、虚部、模及相角随时间变化的曲线。源程序及波形图如下:n=0:30;x=exp(-0.1+i*pi/6).^n;xr=real(x);xi=imag(x);xm=abs(x);xa=angle(x);figure;subplot(221);