matlab在信号与图像处理中的应用第5章.docx
《matlab在信号与图像处理中的应用第5章.docx》由会员分享,可在线阅读,更多相关《matlab在信号与图像处理中的应用第5章.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章MATLAB 信号处理基础知识在前面的章节中,我们对MATLAB R2007a 的基本知识作了详细的介绍,目的是让读者对 MATLAB 的应用环境以及基本功能有个初步的了解。随着MATLAB版本不断升级,其功能日益强大,应用范围更是日益广泛,覆盖了工业、电子、医疗、建筑等众多领域。特别是MATLAB主要用于矩阵运算,在数据分析、信号处理、自动控制等方面具有非常强大的功能, 已成为科研人员和工程技术人员必不可少的工具之一。从本章开始,我们将介绍 MATLAB 在特定领域内的应用。数字信号处理是当前的热门学科之一,相应的MATLAB R2007a 所提供的信号处理工具箱则对该方面的研究提供了
2、非常全面的支持。本章将基于信号处理工具箱,介绍 MATLAB 信号处理的基础知识,包括信号处理工具箱的简介、信号表示方法、数据读入方式、一些典型的离散序列和常用波形如何产生等内容。学习目标r 熟悉信号处理工具箱的基本功能和特性r 掌握信号的表示方法和数据的读入方式r 掌握几种典型的离散序列r 掌握常用波形发生器练习案例r 分别生成单位抽样序列d (0)和d (5)。r 分别生成单位阶跃序列u(0)和u(5)。r 生成正弦型序列sin(pn / 8)。r 分别生成实指数序列(3 / 4)n 和(4 / 3)n 。r 生成复指数序列e(0.05+ jp/ 6)n 。r 产生均值为 0.5,方差为
3、0.1 的白噪声序列。r 将实指数序列(3 / 4)n 扩展为具有 3 个周期的序列。r 生成一个方波信号,要求正信号所占百分比为60%。r 生成 0.5s 的锯齿波和三角波信号,频率都为10Hz,采样频率为 10kHz。r 已知输入变量x,生成sinc 函数波形。1r 生成一个线性扫频信号。r 产生一个二次型扫频信号,要求二次型扫频信号频谱为凹状。r 绘出狄立克莱(Dirichlet)函数图形。r 绘出中心频率为 50kHz 的高斯正弦脉冲,要求相对带宽 60%,包络下降到峰值的 40dB 之下。r 分别产生一个对称的和一个非对称的三角脉冲。r 产生一个矩形脉冲,要求脉冲宽度为 2s。r 产
4、生一个锯齿形脉冲序列,要求重复频率为 3Hz,锯齿宽度 0.1s,信号总长度1s,采样频率 1kHz。r 产生一个幅度递减的高斯脉冲序列,每个脉冲的中心频率10kHz,带宽 40%,脉冲重复频率为 1kHz,采样率 50kHz,脉冲序列长度为 10ms,脉冲幅度每次递减 0.8。r 假设一个输入信号为三角波,绘出该信号经压控振荡器的输出波形,已知采样频率 10kHz。5.1 信号处理工具箱简介MATLAB 工具箱中包含了许多用于解决具体问题的应用程序专用 M 文件,而信号处理工具箱则包含了许多执行信号处理算法的函数,如滤波器设计与实现、频谱分析、加窗、转换等等。本节将简要介绍一下信号处理工具箱
5、的基本情况。5.1.1 什么是信号处理工具箱信号处理工具箱(Signal Processing Toolbox)是基于 MATLAB 数值计算环境的一系列工具(函数)的集合。工具箱支持各种形式的信号处理操作,从波形产生到滤波器设计和实现、参数建模和谱分析等等。工具箱提供了两大类工具:命令行函数和图形用户界面(GUI),其中命令行函数主要应用于以下几个方面:r 离散时间滤波器设计、分析和实现r 模拟滤波器设计、分析和实现r 线性系统变换r 窗函数r 谱分析和倒谱分析(cepstral analysis)r 变换(transforms)r 统计信号处理r 参数建模r 线性预测r 多速率信号处理r
6、波形产生而交互式的图形用户界面主要应用于:r 滤波器设计和分析5.1信号处理工具箱简介r 窗函数设计和分析r 信号作图和分析r 谱分析r 滤波处理5.1.2 信号的表示方法在 MATLAB 环境中,大部分数据都是以数值阵列的形式表示,即将一组实数或虚数按一定顺序排列在两维或更多维空间内。因而采集到的基本信号(包括一维信号或序列、多通道信号、二维信号等)都要表示成阵列的形式。对于一维采样信号或序列,在 MATLAB 中用向量表示。所谓向量是 1n 或 n1 的阵列,这里 n 是序列的采样值个数。引入一个序列的方法之一是在命令提示符后输入一列元素。例如:x = 5 3 8 -6 0 7这条语句产生
7、了一个简单的行向量,该向量由6 个实数组成的序列构成。转置变换就会将该序列变成一个列向量:x = x结果为:x =538-607对于单通道信号而言,最好采用列向量进行表示,这是因为列向量较易扩展到多通道。对于多通道数据而言,一个矩阵中的每一列都对应于一个通道,而矩阵中的每一行对应于一组采样点。一个包含 x、2x 和 x/2 的三通道信号可以表示为y = x 2*x x/2将上面的 x 值代入,得到结果:y =5.000010.00002.50003.00006.00001.50008.000016.00004.0000-6.0000-12.0000-3.00000.00000.00000.00
8、007.000014.00003.500035.2典型离散序列5.1.3 数据的读入方式l 在 MATLAB 工作环境内读入在后续章节当中的一些具体范例,数据的获取一般通过以下两种方式:r 直接输入,即在键盘上手动输入数据;r 利用 MATLAB或工具箱函数,例如sin、cos、sawtooth、square 等等;l 在 MATLAB 工作环境外读入在某些应用场合,可能需要从 MATLAB 工作环境之外输入。根据数据的格式,可以采用以下几种方法读入:r 利用 MATLAB的load命令,从ASCII 文件或 MAT文件中加载数据,该函数的使用方法已在第二章中给出介绍,这里不再赘述;r 利用一
9、个低层文件I/O 函数将数据读入MATLAB,例如fopen,fread,fscanf等;r 开发一个MEX 文件来读取数据;l 将数据转换为 MAT 文件也可利用其他资源读入数据,例如高级程序语言(Fortran 或者C 等)可将数据写成 MAT文件形式,再用MATLAB“load”命令读取。提示:信号处理工具箱仅支持双精度输入。如果输入单精度浮点型或整数型数据,将得不到正确的结果。将 滤波器设计工具箱与定点工具箱联合使用,可使单精度浮点和定点类型数据能够用于滤波处理及滤波 器设计。5.1.4 工具箱的核心功能信号处理工具箱函数大部分是一些以M 文件表示的算法,能够实现多种信号处理功能。这些
10、函数是在MATLAB计算与制图环境之外的专门用于信号处理领域的功能扩展。l 信号与系统工具箱函数所处理的基本实体是信号和系统。这些函数专门用于处理数字(或离散)信号,而非模拟(或连续)信号。工具箱支持的主要滤波器类型是单输入单输出的线性非时变滤波器。可以利用一个或几个模型(例如传递函数、状态空间、零极点增益等)来表示线性时不变系统,当然,这些不同表达形式之间可以进行相互转换。l 滤波器设计分析与实现信号处理工具箱提供滤波器设计功能,即按照特定需求,使用者可以自行设计滤波器。工具箱中包含的滤波器设计功能主要包括FIR 和 IIR 滤波器设计分析和实现、滤波阶数估计、模拟滤波器原型设计与转换等。l
11、 线性系统转换工具箱拥有大量的转换函数,包括二次剖面、状态空间、零极点、网格或梯形函数、以及传递函数之间的转换等。l 窗函数工具箱提供了许多常用的窗函数,同时也提供了图形用户界面(GUI)以便于查看和比较这些窗函数,以及利用这些窗函数设计滤波器。l 谱分析采用参量和非参量方法,工具箱函数可用于估计功率谱密度、均方谱和伪谱。工具箱中包含的一些谱分析方法有 Burg 法、协方差法、特征向量法、周期图法、Welch 和 Yule-Walker 法等等。其他的函数可用于计算功率谱密度平均能量和单边谱,以及将DC 分量移动到谱中心位置等功能。l 变换函数工具箱包含各种类型的变换和逆变换函数,包括傅立叶变
12、换、Z 变换、离散余弦变换、希尔伯特变换等二次剖面、状态空间、零极点、网格或梯形函数、以及传递函数之间的转换等。l 统计信号处理工具箱包含计算相关、互相关、协方差和自相关等统计信息的函数。l 参数建模工具箱提供了一些用于自回归参数建模的方法,有: Burg 法、协方差法、Yule-Walker法等,同时也提供了一些函数用于拟合模拟滤波器或离散时间滤波器的频率响应。l 线性预测工具箱包含了一些函数用于计算线性预测系数,以及自相关函数与预测多项式、反射系数和线谱频率之间的转换。l 多速率信号处理抽取、增降采样、重采样和三次样条插值等多速率信号处理功能,在工具箱中也有相应函数来实现。l 波形产生多种
13、周期和非周期波形也可用工具箱中的相应函数来产生,包括线性调频脉冲、高斯射频脉冲、高斯单脉冲、脉冲串、矩形波、三角波、锯齿波、方波等等。l 其他功能工具箱函数除了能够实现以上各种功能之外,还包括倒谱分析、调制、解调,以及各种绘图方法。5.2 典型离散序列在实际中的信号往往是连续的,经过采样和量化之后就变成离散的序列,才可送入计算机或数字滤波器进行处理,因此,我们这里关注的都是离散序列,或者说 MATLAB 处理的都是离散序列。首先给出一些常用的、比较典型的离散序列信号形式。5.2.1 单位抽样序列单位抽样序列的定义为9d (n)= 10n = 0n 0单位抽样序列d (n)在离散信号处理中的作用
14、类似于连续信号处理中的冲激函数d (t ),但不同的是d (t )是一个极限概念的信号, 在t = 0 时脉宽趋于零,幅值趋于无穷大,因而并非一个现实的信号,而d (n)在 n = 0 时幅值为 1,形式简单便于计算。如果将d (n)在时间轴上延迟了k 个采样周期,则相应表达式为d (n - k )= 10n = k n k在 MATLAB 中可借助函数 zeros(1,N)来实现单位抽样序列。函数 zeros(1,N)产生一个长度为 N 的向量,向量中的每个元素都为零。下面通过具体例子看一下单位抽样序列的MATLAB生成方法。例 5-1 分别生成单位抽样序列d (0)和d (5)。% 实现单
15、位抽样序列d (0)程序k=-10:10;delta=zeros(1,10),1,zeros(1,10);stem(k,delta)% 实现单位抽样序列k=-10:10;d (5)程序delta=zeros(1,15),1,zeros(1,5); stem(k,delta)程序运行结果如图 5-1 所示。(a) d (0)(b) d (4)5.2.2 单位阶跃序列单位阶跃序列的定义为图 5-1 单位抽样序列波形0u(n)= 1n 0 n 0单位抽样序列与单位阶跃序列关系密切,可互相表示, 表达式为d (n)= u(n)- u(n -1)u(n)= k =0d (n - k )在 MATLAB
16、中可利用函数ones(1, N)来实现单位阶跃序列。函数 ones(1,N)产生长度为N 的向量,向量中的每个元素都为单位1。MATLAB 生成单位阶跃序列的方法通过下面的例子给出。例 5-2 分别生成单位阶跃序列u(0)和u(5)% 实现单位阶跃序列 u(0)k=-10:10;delta=zeros(1,10),ones(1,11);stem(k,delta)% 实现单位阶跃序列k=-10:10;u(5)delta=zeros(1,15),ones(1,6); stem(k,delta)程序运行结果如图 5-2 所示。(a) u(0)(b) u(4)提示:MATLAB 产生的都是有限长序列,
17、因此这里的单位阶跃序列为有限区间上的 u(n)。图 5-2 单位阶跃序列波形5.2.3 正弦型序列正弦序列的定义如下x(n)= Asin(nw0+j )0这里 A 为幅度, w0为数字角频率, j0为初始相位。正弦序列可对连续正弦波信号采样后得到。在MATLAB中,利用函数sin 或 cos 产生正(余)弦序列,这与连续正弦信号类似,只不过绘图采用 stem 函数,而非 plot 函数。下面是产生正弦序列sin pn 的 MATLAB 程序范 8 例。sin pn 8例 5-3 生成正弦型序列 。% 实现正弦型序列程序n=0:50;x=sin(pi/8*n); stem(n,x)程序运行结果如
18、图 5-3 所示。图 5-3 正弦序列波形5.2.4 实指数序列实指数序列的定义为x(n)= an这里a 为一个实数,a 的值直接影响序列的波形。当a 1 时,序列发散。在 MATLAB 中通过数组的幂运算来产生实指数序列。下面是产生该序列的一个具体实例。 3 n 4 n 4 3 例 5-4 分别生成实指数序列 和 。% 实现实指数序列程序n=0:15;x1=(3/4).n;x2=(4/3).n; figure(1); stem(n,x1) figure(2); stem(n,x2)程序运行结果如图 5-4 所示。 3 n 4 n(a) (b) 4 3 图 5-4 实指数序列波形5.2.5 复
19、指数序列复指数序列的定义式为0x(n)= e(s + jw )n也可以将实部和虚部分开来表示,x(n)= esn (cosw0 n + j sinw0n)= esn cosw0 n + jesn sinw0 n下面通过一个例子说明利用MATLAB 如何产生一个复指数序列。例 5-5 产生复指数序列e(0.05+ jp / 6)n% 实现复指数序列程序n=0:30;x=exp(.05+i*pi/6).n; xr=real(x); xi=imag(x); xm=abs(x); xa=angle(x);figure; subplot(221);stem(n,xr);title(实部);subplot
20、(222);stem(n,xi);title(虚部);subplot(223);stem(n,xm);title(模);subplot(224);stem(n,xa);title(相角);程序运行结果如图 5-5 所示。从图中可以看出,复指数序列e(0.05+ jp / 6)n 的实部和虚部都是幅度按指数增长的正弦序列。5.2.6 随机序列图 5-5 复指数序列波形随机序列在 MATLAB 仿真分析中应用较多,常常用来模拟背景噪声。有两个函数可直接产生两类随机序列:r rand(1,N)产生0,1上均匀分布的随机序列;r randn(1,N)产生均值为 0,方差为 1 的高斯随机序列,即白噪声
21、序列。当然,其他分布的随机序列也可通过以上两个函数的相应变换产生。提示:均值和方差为特定值的白噪声序列也可通过函数 randn(1,N)来产生。例 5-6 产生均值为 0.5,方差为 0.1 的白噪声序列。%生成白噪声序列程序N=10;mean_v=0.5; var_v=0.1;x=mean_v+sqrt(var_v)*randn(1,N); disp(x)程序运行结果为:x =0.44100.72950.31401.19040.45690.53600.83730.51870.46980.23685.2.7 周期序列所谓周期序列,是满足下式的序列5.3波形发生器x(n)= x(n + N )-
22、 n 式中 N 为周期序列的周期,定义为满足上式的最小正整数。在MATLAB 中有很多种方法可以把一个长度为 N 的序列 x(n)扩展为有 K 个周期的序列 x (n) ,这里仅给其中的一种实现方p法,主要语句为:np=0:K:N-1;xp=x(mod(np,N)+1);第二条语句中的mod(np,N)为求模运算,规则是将 np 除以N,所得的余数为求模运算的结果。下面通过一个具体实例给出一个周期序列的产生过程。例 5-7 将实指数序列 3 n 扩展为具有 3 个周期的序列。 4 % 生成周期序列的程序n=0:15;x=(3/4).n;N=16;k=3;np=0:k*N-1; xp=x(mod
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 信号 图像 处理 中的 应用
限制150内