Matlab在信号处理中的应用

更新时间:2023-06-02 23:34:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATAB在信号处理中的应用

绪言:MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如

C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple、MathCAD并称为四大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的

组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。 MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

Mbtlab在数字处理中的应用主要有两个方面;

一:滤波器设计

1、HR带通滤波器设计;

2、HR带阻滤波器设计;

3、FIR滤波器设计;

4、通过滤波器分离合成信号;

5、巴特沃斯模拟滤波器;

6、模拟滤波器的原型设计;

7、双音多频滤波器的设计;

8、直接型与级联型滤波器的比较;

二:滤波算法

1、自适应滤波LMS算法;

2、频率采样定理;

3、维纳滤波算法;

4、卡尔曼滤波算法

一、IIR 带通滤波器设计

脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲击响应ha(t),使h(n)正好等于ha(t)的采样值,即:

T为采样周期。若以Ha(s)及H(z)分别表示ha(t)的拉氏变换及h(n)的Z变换,即:

根据采样序列Z变换与模拟信号拉氏变换的关系得

:

上式表明,采用脉

波器变换为数字滤波器 冲响应不变法将模拟滤时,它所完成的S平面到Z平面的变换,正是以前讨论的拉氏变换到Z变换的标准变换关系。

二、IIR 带通滤波器设计

脉冲响应不变法特别适用于用部分分式表达的传递函数,模拟滤波器的传递函数若只有单阶极点,且分母的阶数高于分子阶数,则可表达为部分分式形式:

其拉氏反变换为:

对ha(t)采样就得到数字滤波器的单位脉冲响应序列:

再对h(n)取Z变换,得到数字滤波器的传递函数:

第二个求和为等比级数之和:

要收敛的话,必有:

所以有:比较部分分式形式的Ha(s)和上式H(z)可以看到,把S平面上的极点变换到Z平面上对应的极点,而Ha(s)与H(z)中部分分式所对应的系数不变。如果模拟滤波器是稳定的,则所有极点都在S左半平面那么变换后H(z)

的极点

也都在单位圆内,因此数字滤波器保持稳定。

仿真思路:

在MATLAB中,可以用下列函数辅助设计IIR数字滤波器。

(1)利用cheb1ord可以确定低通原型和切比雪夫滤波器的阶数和截止频率。

(2)[num,den]=cheby1(N,Wn),[num,den]=cheby2(N,Wn)

(切比雪夫1 型和2 型)可以进行滤波器的设计。

(3)利用impinvar可以完成脉冲响应不变法的模拟滤波器到数字滤波器的转换。

三、IIR 带阻滤波器设计

利用在MATLAB设计IIR数字滤波器可分以下几步来实现

(1)按一定规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标;

(2)根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N和截止频率Wc;

(3)利用最小阶数N产生模拟低通滤波原型;

(4)利用截止频率Wc把模拟低通滤波器原型转换成模拟低通、高通、带通或带阻滤波器;

(5)利用冲激响应不变法或双线性不变法把模拟滤波器转换成数字滤波器

2.实验原理

1)用双线性变换法设计IIR数字滤波

器数字低通技术指标为:

模拟低通的技术指标为

(1)按一定规格将数字滤波器的技术指标转为模拟低通滤波器的技术指标。

(2)根据转换后的技术指标使用滤波器阶数函数,确定最小阶数N 和截止频率Wc。

(3)利用最小阶数N产生模拟低通滤波器原型。

(4)利用截止频率Wc把模拟低通原型转化为模拟带阻滤波器。

(5)利用冲激响应不变法或双线性不变法把模拟滤波器转换成数字滤波器。

3.仿真思路

(1)用双线性变换法设计一个低通IIR数字滤波器。设计参数为:在通带内频率低于0.2πrad时,最大衰减小于1dB,在阻带内[0.3π,π]频率区间上,最小衰减大于15dB。

(2)所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理,观察滤波前后的图形。

(3)设计一个带阻IIR数字滤波器,其具体要求是:通带的截止频率wp1=650Hz,wp2=850Hz;阻带的截止频率ws1=700Hz,ws2=800Hz,带通内的最大衰减rp=0.1dB,阻带内的最小衰减为rs=50dB,采样频率为Fs=2000Hz。

四、FIR 滤波器的设计

(1)掌握采用频率取样法设计FIR数字滤波器的原理和方法。

(2)熟悉线性相位FIR数字滤波器的特性。

2.实验原理

1)频率取样法设计的基本思想

频率取样法先对理想频响抽样,得到样值H(k),再利用插值公式直接求出系统函数H(z)以便实现之,或者求出频响以便与理想频响作比较。在[0,2π]区间上对理想频响进行N点采样,等效于时域以N为周期延拓。

通过滤波器分离合成信号,通过以上对滤波器的设计,可以得出通过设计所需信号的滤波器能滤去其余干扰信号,而且滤波器还可以用来对信号进行变换、调制、解调、去噪、识别信号等。

从程序代码中可以看出,只要写入正确的参数,就可以利用 MATLAB 中的函数去设计所需的滤波器,进而运用于实际中。

这里的特性接近矩形,是指通带频率响应段与过渡频率响应段的夹角接近直角,通常为钝角,如果该角为直角,则为理想滤波器。

所谓的滤波器的零点就是将该点的值代入传递函数后,传递函数的值为零。所谓的函数的极点就是将该点的函数值代入传递函数后,传递函数的值为无穷大。滤波器的增益是传递函数表达式前的常数。若系统的传递函数表示为:

五、模拟滤波器的原型设计

1.实验目的

(1)了解模拟滤波器的基本概念和设计方法。

(2)学习模拟滤波器的设计方法及其实现。

(3)掌握巴特沃斯模拟低通滤波器的设计思想及方法。

2.实验原理

滤波是信号处理的一种基本而重要的技术,利用滤波可以从复杂的信号中提取所需要的信号,抑制不需要的部分。所谓滤波器,就是对已知激励可以在时 间域或频域产生规定响应的网络。要使滤波器能够提取有用信号,要求滤波器对信号与噪声有不同的增益,对有用信号尽量无失真放大,而对噪声尽量衰减。 模拟滤波器按幅度特性可分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器。

2) 模拟滤波器设计方法

模拟滤波器设计方法已经相当成熟,并且有若干典型的模拟滤波器可供选择,如巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器和贝塞尔滤波器等。这些滤波器的特点各异,巴特沃斯滤波器具有单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带和阻带内有波动,可以提高选择性;贝塞尔滤波器在通带内有较好的线性相位特性;椭圆滤波器的选择性相对于前3种滤波器是最好的。 在

MATLAB

提供了中,上述所有滤波器的设计函数,从而大大降低了滤波器的设计难度。设计模拟滤波器主要有两种方法。一种是首先调用buttap、cheblap 等函数设计模拟低通滤波器原型,然后通过lp2lp、lp2hp 等函数进行频率变换,将模拟低通滤波器原型转换为高通、带通和带阻等滤波器。另一种是根据滤波器性能参数,首先调用buttord、cheb2ord

等阶数估计函数,对满足技术指标的滤波器的最低阶数进行

估计,然后再调用滤波器完全设计函数进行模拟滤波器设计。

2) 信号传输的条件

所谓信号无

指输入信号通过

信号的幅值和输失真传输是系统后,输出入信号的幅值成正比。允许有一定的延时,但没有波形上的畸变。因此,系统的频率响应H(jw)满足下面的特性。

即信号无失真传输的条件是:系统的幅频响应|H(jw)|应为常数,相频响应∠ H(jw)应与ω成比。

3.仿真思路

巴特沃斯模拟低通滤波器的平方幅频响应函数为:

巴特沃斯滤波器的特点:通带内具有最大平坦的频率特性,且随着频率增大平滑单调下降;阶数越高,特性越接近矩形,过渡带越窄,传递函数无零点。

这里的特性接近矩形,是指通带频率响应段与过渡带频率响应段的夹角接近直角。通常该角为钝角,如果该角为直角,则为理想滤波器。

MATLAB信号处理工具箱提供巴特沃斯模拟低通滤波器原型设计函数,函数调用格式如下。

[z,p,k]=buttap(n)

巴特沃斯滤波器的

形式

: 传递函数具有下面的

在有关模拟滤波器设计的MATLAB程序中,经常遇到一些特定函数。[b,a]=zp2tf(z,p,k)为将模拟原型滤波器函数(如 buttap)设计出的零点z、极点p和增益k形式转换为传递函数(transfer function)形式。通过[H,

ω ]=freqs(b,a,ω )求出传递函数形式表示的滤波器对应于频率点ω的复数频率响应H(包括实部和虚部),这里ω为一个向量,表示对应的角频率。若该函数不写输出变量,则执行后绘出该滤波器的幅频响应和相频响应图。

六、双音多频滤波器的设计

实验目的:

(1)进一步了解信号处理的理论基础。

(2)学

习双音

多频以

及其实现。

(3)掌握双音多频的滤波器检测方法。

2.实验原理

双音多频(DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔实验室研 制,并用于电话网络中,这种信号制式有很高的拨号速度,且容易自动监测识别。 DTMF拨号是目前电话机中普遍采用的一种拨号方式。采用该机制的电话机包含行频和列频两组频率,每组由4个频率组成。电话机上的每一个键都可以由 它的行频和列频唯一标识。标准频率的选定不是任选的,而是设计时考虑了拨号音、忙音及交流电源的杂音,这些杂音均不在上述DTMF信号的范围内。同时为了避免标准频率之间的谐波干扰出现,故所列最高标准频率小于最低标准频率的3次谐波。

DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。两个单音频的频率不同,代表的数字或实现的功能也不同。

这种电话

机中通常有16个按键,其中有10 个数字键0~9和6个功能键*、#、A、B、C、D。由于按照组合原理,一般应有8 种不同的单音频信号。因此可采用的频率也有8 种,故称之为多频。根据CCITT的建议,国际上采用的频率为697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz 和1633Hz 等8 种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合如图4.16 所示。

双音多频滤波器的设计解码部分用滤波器组实现。使用低通及高通滤波器来完成。每个数字都包含低频和高频两个频率分量,分别设计低通和高通滤波器来分离。通过检测出的有效频率,查找表,可以得到解码数字,输出该数字。

3.仿真思路

若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器。当用硬件实现时,所需的元件是乘法器、延时器和相加器;而用MATLAB软件实现时,仅仅需要线性卷积程序即可。

数字滤波器的作用是对输入信号进行滤波,就如同信号通过系统一样。

此处使用低通及高通滤波器来完成。每个数字都包含低频和高频两个频率分量,分别设计低通和高通滤波器来分离。低频率分量697Hz、770Hz、852Hz 和941Hz 的最

小间隔为

73Hz,设计

低通滤波

器,使滤波

器的通带截

止频率介于

每两个频率

中间,使得检测某一频率时其他频率分量可以很好地被隔离。在这里低通滤波器设计4 个,在滤波时逐个调用从低到高一旦检测到有效分量立即终止,保证不出现误检。高频率分量为1209Hz、1336Hz、1477Hz 和1633Hz,最小间隔为127Hz

类似于低通,设计4个高通滤波器,检测时则是从高到低检测,一旦检测到有效分量即终止。分别滤波后,根据循环次数来确定对应的数字。

七、自适应滤波LMS算法

.实验目的

(1)进一步了解自适应滤波原理。

(2)学习LMS自适应算法及其MATLAB仿真。

2.实验原理

自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。输入信号x(n)通过参数可调数字滤波器后产生输出信号y(n),将其与参数信号d(n)进行比较,形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。

最小均方误差LMS准则的目的在于使滤波器输出与期望信号误差的平方的统计平均值最小。LMS自适应横向滤波器如图4.19所示。

在性能曲面上最佳权矢量对应点的梯度等于零,即:

该方程称为正则方程,由此解出最佳权向量称为维纳解。

利用上式求解,需要精确地知道输入信号和期望信号的先验统计知识,而且还要对矩阵求逆运算。最陡下降法可避免求逆运算,它通过递推的方式寻求加权矢量的最优值,是LMS算法的理论基础。首先设置一个W的初值W(0),可以想象,沿ξ减小的方向

调整W,可以找到最佳权矢量。因为梯度方向是ξ增加最快的方向,所以负梯度方向就是ξ减少最快的方向。

八、卡尔曼滤波算

卡尔曼滤波原理

首先要引入一个离散控制过程的系统,该系统可用一个线性随机微分方程来描述:

X(k)=AX(k 1)+BU(k)+W(k)

再加上系统的测量值:

Z(k)=H X(k)+V(k)

上两式子中,X(k)是k时刻的系统状态,U(k)是k 时刻对系统的控制量。A和B是系统参数,对于多模型系统,它们为矩阵。Z(k)是k时刻的测量值, H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。它们被假设成高斯白噪声,其协方差分别是Q、R这里假设它们不随系统状态变化而变化。

由于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面来估算系统的最优化输出。

首先利用系统的过程模型预测下一个状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:

X(k|k-1)=AX(k-1|k-1)+BU(k)

上式中,X(k|k-1)是利用上一个状态预测的结果,X(k-1|k-1)是上一个状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。到现在为止,系统结果已经更新了,可是对应于X(k|k-1)的协方差还没更新。用P表示协方差:

P(k|k 1)=A P(k 1|k 1) A'+Q

上式中,P(k|k 1)是X(k|k 1)对应的协方差,P(k 1|k 1)是X(k 1|k 1)对应的协方差,A‘表示A的转置矩阵,Q是系统过程的协方差。上面两个公式就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

有了现在状态的预测结果,再收集现在状态的测量值。结合预测值和测量值,可以得到现在状态(k);的最优化估算值X(k|k):

X(k|k)=X(k|k 1)+Kg(k)(Z(k) H X(k|k 1))

其中Kg为卡尔曼增益(Kalman Gain):

Kg(k)= P(k|k 1) H'/(H P(k|k 1) H' + R)

至此为止,已经得到了k状态下最优的估算值X(k|k)。但是,为了要令卡

尔曼滤波器不断地运行下去,直到系统过程结束,还要更新k状态下X(k|k)的covariance:

P(k|k)=(I-Kg(k)H)P(k|k-1)

其中I为1的矩阵,对于单模型单测量,I=1。根据上述5个公式,可以很容易地实现计算机程序。

仿真思路

把房间看成是一个系统,然后对这个系统建模。已知房间的温度跟前一时刻的温度相同,所以A=1。没有控制量,所以U(k)=0。因此得出:

X(k|k-1)=X(k-1|k-1)

P(k|k-1)=P(k-1|k-1) +Q

因为测量的值是温度计的,跟温度直接对应,所以H=1。

X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1))

Kg(k)= P(k|k-1) / (P(k|k-1) + R)

P(k|k)=(1-Kg(k))P(k|k-1)

现在模拟一组测量值作为输入。假设房间的真实温度为25度,模拟200个测量值,这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图4.27 中为蓝线)。

为了令卡尔曼滤波器开始工作,需要告诉卡尔曼两个零时刻的初始值X(0|0)和P(0|0)。它们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐收敛。但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信给定的X(0|0)是系统最优的,从而使算法不能收敛。本例选了X(0|0)=1 度,P(0|0)=10。

该系统的真实温度为25度,图4.27中用蓝线表示。图4.27中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e 6,R=1e 1)。

通过这次论文设计,让我对MATLAB的基本应用有了更深的了解,还有它在很多领域的应用广泛,对很多信号都可以加以处理,以得到我们想要的结果,还有数字信号处理在MATLAB中的一些函数的用法。通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

参考文献:

(1)《MATLAB LabVIEW SystemView》翁剑枫 叶志前 编著, 机械工业出版社;

(2)《MATLAB及在电子信息课程中的应用》陈怀琛 吴大正 高西全编著,电子工业出版社;

(3)《MATLAB在数字信号处理中的应用》(弟2版)薛年喜 编著,清华大学出版社;

(4)《MATLAB扩展编程》何强 何英 编著,清华大学出版社;

(5)《MATLAB7简明教程》吴清 曹辉林 编著,清华大学出版社;

(6)MATLAB5.3精要.编程及高级应用》程卫国 冯峰 王雪梅 刘艺 编著,机械工程出版社。

本文来源:https://www.bwwdw.com/article/f301.html

Top