基于MATLAB GUI的数字信号处理仿真平台开发
2021-01-08孙慧霞周上楠窦永梅
孙慧霞,周上楠,周 玲,窦永梅
(运城学院 物理与电子工程系, 山西 运城 044000)
几乎所有的工程技术领域都会涉及到信号处理问题,而数字信号处理以其灵活性、高精度、高可靠性、便于大规模集成以及可以实现模拟系统无法实现的诸多功能等优点,成为发展最快、应用最广泛、成效最显著的学科之一,目前已广泛应用于雷达、图像、语音、声纳、控制、通信、地震、航空航天、生物医学、地质勘探、故障检测、遥感遥测、自动化仪表等领域[1-3]。然而,数字信号处理涉及到的理论较抽象,算法复杂,不易理解。如何以可视化的方式将数字信号处理的基本运算和典型算法形象进行展现是一个重要课题。
目前,普遍采用基于MATLAB图形用户界面(Graphical User Interface, GUI)设计开发数字信号处理仿真平台。但开发的功能主要基于最基本的信号产生、运算、频谱分析、FIR滤波器和IIR滤波器的设计,缺乏工程实际案例的引入及功率谱估计和自适应滤波等常用算法[4-11]。本文基于工程实际案例,采用MATLAB GUI开发出数字信号处理仿真平台,可以用通俗、直观的图形来表现各种数字信号以及其处理过程,包括信号产生、信号的基本运算、卷积计算、CZT、FFT、IIR滤波器、FIR滤波器,并引入实际工程应用中常用的功率谱估计以及自适应滤波算法,使本身抽象难懂的理论知识变得可视化,从而更加容易理解和掌握。
1 MATLAB图形用户界面
图形用户界面开发环境(Graphical User Interface Development Environment, GUIDE)是MATLAB软件中专为GUI设计的向导设计器[12]。图形用户界面作为交互式的MATLAB用户可视化工具,运用图形用户界面生成的操作界面可以使用户直观地进行可视化操作,而无需浏览繁冗的代码,提高了易读性,能快速获取信息[13-14]。
2 平台界面设计
基于MATLAB GUI开发的数字信号处理仿真平台包括1个系统主界面和9个系统子界面,其中每个子界面中都可以进行参数选择和结果显示,如图1所示。
图1 平台界面总体框图Figure 1. Overall block diagram of platform interface
平台设计采用自顶而下的设计方法,先设计主界面,再设计子界面。在Command窗口中输入guide,即可进入创建GUI平台界面,选取Blank GUI,点击确定后,会进入fig界面。在该界面中通过设计按钮、坐标区、可编辑文本框、静态文本等GUI工具,并以此产生回调函数。通过对参数进行修改,建立GUI平台。主界面由9个按键组成,每个按键对应着数字信号处理仿真平台的一个知识点,每个按键由一个Callback回调函数来调用相关算法或者滤波器的子界面,进行相关算法的计算与使用。
3 仿真平台的建立与实现
“数字信号处理”仿真平台基于MATLAB GUI实现,该仿真平台能够实现的应用包括信号产生、信号基本运算、卷积计算、Chirp-z变换(CZT)、FFT计算、功率谱估计、IIR滤波器设计、FIR滤波器设计以及自适应滤波算法。“数字信号处理”仿真平台的主界面如图2所示。
图2 数字信号处理仿真平台主界面Figure 2. Main interface of digital signal processing simulation platform
3.1 信号产生
信号的产生界面中,包含了数字信号处理常见的信号,例如三角波、方波、单位阶跃信号、Sa抽样信号、正弦信号、余弦信号、实指数信号、随机信号等,可单击其中所需要产生的信号按钮,生成对应波形。信号产生的子界面如图3所示。
图3 信号产生子界面Figure 3. Sub-interface of signal generation
3.2 基本运算
在信号基本运算子界面中,可以在序列1模块和序列2模块中自由选择抽样序列、单位阶跃序列、实指数序列、正弦序列。通过修改相关参数可获得需要的信号波形,计算方式包括序列相乘、序列相加、序列反折、序列倒相。本界面利用MATLAB相关函数简化了计算过程,直观地得到序列基本运算的结果。图4为正弦序列和单位阶跃序列进行序列相乘的结果。
图4 信号基本运算子界面Figure 4. Sub-interface of signal basic operation
3.3 卷积计算
在卷积计算子界面中,可以在信号1和信号2中选取三角波、方波、阶跃信号、Sa抽样信号、正弦信号、余弦信号、实指数信号等信号中的两个进行卷积运算。卷积方式可选线性卷积、圆周卷积和补零法求线性卷积。卷积后的结果可以直观显示出来,让使用者浅显易懂地掌握线性卷积和圆周卷积的特点,三角波和Sa抽样信号进行线性卷积的结果如图5所示。
图5 卷积计算子界面Figure 5.Sub-interface of convolution calculation
3.4 Chirp-z变换
Chirp-z变换(CZT)子界面中,可以通过修改相关参数获得所需波形,并显示出原始信号、幅频响应、相频响应图像。从而将抽象难懂的CZT用频响函数表示出来,有助于更好地理解和掌握CZT算法。CZT变换的原始信号及其幅频响应和相频响应如图6所示。
图6 CZT子界面Figure 6.Sub-interface of CZT
3.5 FFT
FFT子界面如图7所示,示例输入信号为两个叠加的正弦信号,并加入高斯白噪声,输入采样频率和采样时间,点击“确定”按键可获得信号功率以及相关波形、幅频响应和相频响应。
图7 FFT子界面Figure 7. Sub-interface of FFT
3.6 功率谱估计
功率谱估计是数字信号处理的重要内容之一[15],在功率谱估计子界面中,可以选定经典功率谱和现代功率谱估计方法。其中,经典功率谱估计方法有相关图法、周期图法、平均周期图法和加窗平均周期图法等,现代功率谱估计方法有Burg算法、MUSIC算法、特征向量法等。为比较不同的功率谱估计算法,分别采用周期图法和Burg算法对加噪信号进行分析,其功率谱分别如图8和图9所示。通过对比图8和图9可以看出,采用周期图法的经典功率谱估计方差较大,谱分辨率较差,采用Burg算法的现代功率谱估计的谱分辨率较高。
图8 周期图法估计功率谱子界面Figure 8.Sub-interface of power spectrum estimation based on periodogram method
图9 Burg算法估计功率谱子界面Figure 9.Sub-interface of power spectrum estimation based on Burg algorithm
3.7 IIR滤波器设计
典型的IIR滤波器有巴特沃斯滤波器(Butterworth Filter)、切比雪夫I型滤波器(Chebyshev I Filter)、切比雪夫II型滤波器(Chebyshev II Filter)、椭圆滤波器(Ellipse Filter)等。在设计IIR滤波器时,首先根据实际需求选择合适的滤波器类型,并确定滤波器的相关参数,点击幅频响应、相位响应、冲激响应、阶跃响应、零极点图,可得到对应的滤波器的相关波形。以巴特沃斯低通滤波器设计为例,其幅频响应如图10所示。
图10 IIR滤波器设计子界面Figure 10.Sub-interface of IIR filter
3.8 FIR滤波器设计
采用窗函数法设计FIR滤波器,可以选取的窗类型有矩形窗(Rectangle Window)、三角形窗(Bartlett Window)、汉宁窗(Hanning Window)、哈明窗(Hamming Window)等典型窗,根据设计需要选择合适的窗函数及相关参数即可得到所需的滤波器。以哈明窗(Hamming Window)为例设计的FIR高通滤波器,其幅频响应如图11所示。
图11 FIR滤波器设计子界面Figure 11.Sub-interface of FIR filter
3.9 自适应滤波
自适应滤波算法包括线性自适应算法和非线性自适应算法,其中线性自适应算法在实际中应用更广泛。自适应滤波算法主要有两类,分别是基于最小均方误差准则、最陡下降法的LMS自适应滤波算法和基于最小二乘法的RLS自适应滤波算法[16]。对于加噪的声音信号,以LMS自适应滤波算法为例,其原始信号、加噪后的信号、采用LMS滤波后的信号的时域波形和频谱结果如图12所示。由图12可以看出,加噪后的声音信号经过LMS算法滤波后能够较好地滤除噪声。
图12 自适应滤波器设计子界面Figure 12.Sub-interface of adaptive filter
4 结束语
基于MATLAB GUI设计了数字信号处理仿真平台,引入实际工程案例作为示例,以交互式的方式将数字信号处理的基本运算和典型算法直观、方便地演示出来,实现的功能有信号产生、基本运算、卷积计算、CZT、FFT、功率谱估计、IIR滤波器、FIR滤波器、自适应滤波,对于理解和掌握数字信号处理的常用运算和典型算法具有一定的意义。在下一步的工作中,将在数字信号处理MATLAB GUI仿真平台中进一步充实实际工程案例,为从事信号与信息处理工作的科研人员提供参考。