张旭_基于matlab的数字信号处理内容摘要:

及四维数据的表现等), MATLAB 同样表现了出色的处理能力。 同时对一些特殊的可视化要求,例如图形对话等, MATLAB 也有相应的功能函数,保证了用户不同层次的要求。 另外新版本的 MATLAB 还着重在图形用户界面( GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。 ⑤ 应用广泛的模块集合工具箱 MATLAB 对许多 专门的领域都开发了功能强大的模块集和工具箱。 一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。 目前, MATLAB 已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、 神经网络 、 小波分析 、信号处理、图像处理、系统辨识、控制系统设计、 LMI 控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、 DSP 与通讯、电力系统仿真等,都在工具箱( Toolbox)家族中有了自己的一席之地。 ⑥ 实用的程序接口和发布平台 新版本的 MATLAB 可以利用 MATLAB 编译器和 C/C++数学库和图形库,将自己的 MATLAB 程序自动转换为独立于 MATLAB 运行的 C 和 C++代码。 允 9 许用 户编写可以和 MATLAB 进行交互的 C 或 C++语言程序。 另外, MATLAB网页服务程序还容许在 Web 应用中使用自己的 MATLAB 数学和图形程序。 MATLAB 的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。 工具箱是 MATLAB 函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。 ⑦ 应用软件开发(包括用户界面) 在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条 件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向 Excel 和 HDF5 进行连接。 第二章 离散时间信号与系统 离散 时间信号的概念 信号是传递信息的函数,它可表示成一个或几个独立变量的函数。 信号的自变量有多种形式,可以是时间、温度、距离、电压等,一般将信号看做时间的函数。 按时间的连续与离散和幅值的连续与离散,信号可 分为一下几种。 ◎ 连续时间信号:时间连续,幅值可以连续也可以离散。 ◎ 模拟信号:时间连续,幅值连续,是连续时间信号的特例。 ◎ 离散时间信号 (序列 ):时间离散,幅值连续。 ◎ 数字信号:时间离散,幅值离散(幅值量化了的离散时间信号)。 数字信号处理系统处理的是离散时间信号经过量化和编码后形成 的二进制编码序列。 离散时间信号通常由对连续时间信号(模拟信号 ) x a t 进行抽 样获得,设抽样间隔为 T,则离散时间信号可表示为: x a  nT = x a t tnT n  抽样后得 到的 x a  nT 是按照一定顺序排列的一组数据,为了简化,省略 T,记为序列 x n。 显然, x n 只在 n 为整数时 才有意义, n 为非整数时没有定义。 一个序列包括两个要素:样值和位置。 在 MATLAB 中,用样值向量和位置向量来表示一个序列,要求两个向量长度相等。 几种典型离散时间信号的 MATLAB 生成 单位冲激序列 单位冲激序列定义为 : 1 0[] 00nn n    其特点是仅在 0n 处取值为 1,其他取值均为零。 []n 的移位序列也很 重要,其表达式为: 10 0001 [] 0 nnnn nn   其特点是仅在 0nn 处取值为 1,其他取值均为零。 单位冲激序列 []n 或其移位序列 0[]nn  除了 0n 或 0nn 处取 1,剩余的值都可以看做是零向量。 在 MATLAB 中,用 zeros 函数产生一个零向量,其通常的 调用格式为: x=zeros 1,N。 上述语句产生的向量 x 表示一个 1N 维的零向量。 另外,利用逻辑关系表达式产生单位冲激序列也是一种常用的方法,其格式为: x=  0 0nn 。 上述语句产生的向量 x 表示一个仅在 0nn 处取 1的单位冲激序列。 MATLAB程序如下: x=zeros(1,30)。 x(6)=1。 n=1:30。 stem(n,x,39。 .39。 )。 axis([0,30,0,2])。 xlabel(39。 n39。 ),ylabel(39。 x39。 ) 运行结果: 11 单位阶跃序列 单位阶跃序列定义为: 1 0[]00nun n    其特点是仅在 0n 处取值为 1,其他取值均为零。 []un 的移位序列也经常用到,其表达式为: 0001 [] 0 nnu n n nn  其特点是仅在 0nn 处取值为 1,其他取值均为零。 单位阶跃序列 []un 及其移位序列 0[]un n 都可以看做是一个零向量和一个全 1向量组合而成。 在 MATLAB 中,用 ones 函数产生一个全 1向量,其通常的调用格式为: x=ones 1,N。 上述语句产生的向量 x 表示一个 1N 维的全 1 向量。 另外,利用逻辑关 系表达式产生单位阶跃序列也是一种常用的方法,其格式为: x=  0 0nn ; 上述语句产生的向量 x 表示一个起点在 0nn 处的单位阶跃序列。 MATLAB程序如下: n=5:10。 x=ones(1,16)。 stem(n,x,39。 .39。 )。 xlabel(39。 n39。 )。 ylabel(39。 x(n)39。 ) axis([5,10,2,2]) 运行结果: 12 单位矩形序列 单位矩形序列定义为: 1 0 1[] 0N nNRn     其 他 其特点是仅在  0 N1, 区间内取值为 1,其他取值均为零。 8[]Rn的 MATLAB程序如下: n=5:10。 R8=[(n=0)amp。 ((n7)=0)]。 stem(n,R8,39。 .39。 )。 xlabel(39。 n39。 )。 ylabel(39。 x(n)39。 ) axis([6 11 ])。 运行结果: 正弦序列 正弦序列定义为: 13      sin sin 2x n A n A fn       其中,  为正弦序列的数字角频率; f 为正弦序列的数字频率;  为正弦序列的初 相 位。 假 设 该 正 弦 序 列 是 由 模 拟 正 弦 序 列     0sin sin 2ax t A t A f t      抽样所得,抽样间隔为 T,抽样频率为1/sFT ,则可得如下关系式: 0sTffF 其中,  的单位为弧度( rad ),反映序列变化 快慢的速率; f 是模拟频率对采样的归一化,无量纲,没有实际的物理意义。 同样,余弦序列可以定义为:      c os c os 2x n A n A fn       正弦(余弦)序列在 MATLAB 中可以用 sin ( cos )函数生成 ,格式如下: si n( )。 si n( 2 / )。 c os ( )。 c os ( 2 / )。 ososx A ome ga n t he l t ax A pi f F n t he l t ax A ome ga n t he l t ax A pi f F n t he l t a                 用 MATLAB 生成 正弦序列 : f=10。 Fs=1000。 fai=0。 n=1:99。 N=100。 x=sin(2*pi*f*n/Fs+fai)。 stem(n,x)。 axis([0,150,])。 xlabel(39。 n39。 ),ylabel(39。 x39。 ) 运行结果: 14 复指数序列 复指数序列定义为: ()() j n n j nx n e e e    令  =0,则 ( ) c os( ) sin( )jnx n e n j n   称为单位复指数序列。 复指数序列是一个复序列: ( ) c o s( ) sin( )n j n n nx n e e e n je n      将 复指数序列 实部和虚部的波形分开讨论, 得出如下结论: ( 1)当 0a 时,复指数序列 )(nx 的实部和虚部分别是按 指数规律增长的正弦振荡序列; 15 ( 2)当 0a 时,复指数序列 )(nx 的实部和虚部 分别是按 指数规律衰减的正弦振荡序列; ( 3)当 0a 时,复指数序列 )(nx 即为 虚指数序列,其 实部和虚部分别是 等幅的正弦振荡序列。 复正弦序列 () jnx n e 在 Matlab 中编程如下: n=0::10。 w=2。 x=exp(j*w*n)。 stem(n,x,39。 .39。 )。 xlabel(39。 n39。 )。 ylabel(39。 x(n)39。 ) axis([0,10 5,5]) 运行结果: 用 MATLAB 命令 画出复指数序列 njenx )6101(2)(  的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。 MATLAB 源程序为 n=0:30。 A=2。 a=1/10。 b=pi/6。 x=A*exp((a+i*b)*n)。 subplot(2,2,1) stem(n,real(x),39。 fill39。 ),grid on title(39。 实部 39。 ),axis([0,30,2,2]),xlabel(39。 n39。 ) 16 subplot(2,2,2) stem(n,imag(x),39。 fill39。 ),grid on title(39。 虚部 39。 ),axis([0,30,2,2]) ,xlabel(39。 n39。 ) subplot(2,2,3) stem(n,abs(x),39。 fill39。 ),grid on title(39。 模 39。 ),axis([0,30,0,2]) ,xlabel(39。 n39。 ) subplot(2,2,4) stem(n,angle(x),39。 fill39。 ),grid on title(39。 相角 39。 ),axis([0,30,4,4]) ,xlabel(39。 n39。 ) 运行结果: 单边指数序列 单边指数序列定义为 )()( nuanx n 用 MATLAB 命令分别绘制单边指数序列 )()(1 nunx n 、 )()()(2 nunx n 、)()()(3 nunx n 、 )()()(4 nunx n 的波形图。 MATLAB 源程序为 n=0:10。 a1=。 a2=。 a3=。 a4=。 x1=a1.^n。 x2=a2.^n。 x3=a3.^n。 x4=a4.^n。 subplot(221) 17 stem(n,x1,39。 fill39。 ),grid on xlabel(39。 n39。 ),title(39。 x(n)=^{n}39。 ) subplot(222) stem(n,x2,39。 fill39。 ),grid on xlabel(39。 n39。 ),title(39。 x(n)=()^{n}39。 ) subplot(223) stem(n,x3,39。 fill39。 ),grid on xlabel(39。 n39。 ),title(39。 x(n)=^{n}39。 ) subplot(224) stem(n,x4,39。 fill39。 ),grid on xlabel(39。 n39。 ),title(39。 x(n)=()^{n}39。 ) 运行结果: 单边指数序列 n 的取值范围为 0n。 有运行结果可知,当 1|| a 时 ,单边指数序列发散;当 1|| a 时,该序列收敛。 当 0a 时,该序列均取正值;当 0a 时,序列在正负摆动。 第三章 离散时间信号的基本运算 序列相加和相乘 设有序列 x1(n)和 x2(n),则他们 的相加和相乘如下: y(n)=x1(n)+x2(n) 18 y(n)=x1(n) x2(n) 设两序列用 x1 和 x2表示,序列相加是对应序列值之间的简单相加, 参与运算的两个序列必须具有相同的长度,并且保证位置相对应。 否则,在进行运算之前应采用 zeros 函数将序列左右补零使其长度相等并且位置相对应。 MATLAB 实现语句为: y=x1+x2。 在 MATLAB 中,两个矩阵直接用“ *”连接表示矩阵之间的相称,而序列相乘是对应序列值之间的相乘,其实现形。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。