基于MATLAB GUI的《信号与系统》课程仿真实验平台设计
2022-09-19宋玲玲刘立群司财勇王维云顾任远
宋玲玲,刘立群,司财勇,王维云,顾任远
(甘肃农业大学 信息科学技术学院,甘肃 兰州 730070)
0 引 言
随着计算机技术的不断更新发展,开发和设计可视化和交互式的《信号与系统》课程的虚拟实验平台成为必然。通过设计仿真平台,可以让学生和老师以及其他用户直接地观看到仿真波形,使得大家对于较为晦涩难懂的原理有更好的理解和掌握,为教学和研究提供了诸多便利。为此,具有强大的数学功能以及波形显示功能的MATLAB GUI工具便成了最好的选择。利用MATLAB设计和开发的虚拟仿真实验平台可以为用户提供形象的仿真波形,显示不同信号在不同激励下的响应。与此同时,GUIDE工具中还含有各种控件,方便人们依据自己的需要创建具有不同功能的虚拟操作平台。
1 系统设计
系统总体设计如图1所示。
图1 系统总体设计
1.1 系统设计原理
MATLAB是MathWork公司出品的数学软件,可以用于数据分析、信号处理、图像处理等诸多方面,该软件的交互式程序设计的环境,为本文的平台设计提供了诸多便利。其中的大量库函数也极大地便利了编程过程。在MATLAB的命令行窗口输入GUIDE即可打开GUI界面,利用里面的各个控件,可以设计出自己需要的虚拟图像,而且系统会自动生成.m文件,里面有各个控件的相关代码和回调函数,只需要在相关控件的.m文件位置输入相关代码即可,极大地便利了用户。
在本平台设计过程中,首先根据《信号与系统》一书的章节内容,设计了主界面;然后通过close和run函数实现了子界面和主界面之间的跳转。对于子界面的设计,依据《信号与系统》这本书,以每个章节为单位共设计了八个子界面;在每个子界面中都有相关按钮的回调函数,使其与主界面实现跳转,这八个子界面的内容有信号与系统、傅里叶变换和系统的频域分析、连续系统的S域分析、系统的状态变量分析等诸多方面,不同的子界面对当前章的内容进行了详细的分析,对不同激励下的不同响应进行了仿真;在子界面中还可以输入不同的参数,观察波形的变化,对不同信号有更透彻的理解。系统流程如图2所示。
图2 系统流程
1.2 系统设计步骤
对于主界面的设计,在MATLAB命令行窗口中,输入命令GUIDE,点击enter键打开GUI界面;然后选择静态文本的控件,双击左键对该控件进行详细的设置,其中包括背景颜色(BackgroundColor)、字符串(String)、字形大小(FontSize)等;最后拖拽该空间大小,使仿真平台界面更加美观。
对于子界面的设计,首先,像设计主界面一样,对子界面进行设置,对于相关控件,利用回调函数使得系统可以对相关代码进行波形仿真;然后,利用run函数实现子界面和主界面之间的跳转,利用close函数关闭完成信号分析的子界面。
1.3 系统模块设计
对于主界面的设计,是为了方便对子界面的链接和跳转,其中主要利用的是close函数和run函数。通过主界面可以更加方便地查找不同内容,对系统起到了统领作用,也为仿真平台的设计提供了系统的思路。
对于子界面的设计,是基于对整本书的理解和概括总结,其中有更为详细的函数举例,通过这些具体的函数以及相关参数和不同的输入信号,分析波形及其规律,能够使学生更加具体直观地掌握《信号与系统》中的内容。
2 系统测试
2.1 子界面1的测试
《信号与系统》的第一章是信号与系统,主要体现信号波形与系统之间的关系。利用MATLAB对函数进行波形分析,本文选取了正弦信号、随机信号、单位冲击信号、符号信号、指数信号和三角信号这六个信号,展示了该平台对信号的仿真效果。其中,除了各个函数的代码外,主要使用了MATLAB中的plot函数,该函数的调用格式是plot(,),它的功能十分强大,不仅可以在调用格式的时候定义线条的颜色、粗细等,还可以同时输出多条曲线。仿真效果如图3所示。
图3 子界面1的仿真效果
2.2 子界面2的测试
《信号与系统》的第二章是连续系统的时域分析。对于该子界面的设计,首先选取了函数()+2()+100()=2(),分别对其求冲击响应和零状态响应。求冲击响应时,用到了impulse函数,其作用是计算并画出系统的冲击响应;求其零状态响应时,用到了lsim()函数,其主要作用是求系统的零状态响应。在本章中,利用lsim函数对波形进行仿真的同时,也对其线条的颜色以及粗细等进行个性化设置。其次,又选取了()+2()+()=()+2()函数进行仿真。仿真效果如图4所示,在系统中设置不同颜色的仿真波形分别表示不同值下的仿真效果,=0.5时仿真波形为蓝线,=0.2时仿真波形为绿线,=0.01时仿真波形为红线。根据仿真波形可以很容易地观察到,函数lsim()对系统响应的仿真效果与时间间隔的密集程度有很大关系,抽样时间间隔越小其仿真效果越好。
图4 子界面2的仿真效果
2.3 子界面3的测试
《信号与系统》的第三章是离散系统的时域分析。对于该章的子界面的设计,首先选取了函数()+2.345 2(-1)+2.75(-2)+1.889(-3)+0.648 8(-4)=0.648 8(-4),>0。对于该函数,分别求其脉冲响应和零状态响应。需要注意的是,对于该函数,本文设计了输入信号,不同的输入信号对应不同的波形,如图5所示。对于第二个函数()+0.75(-1)+0.125(-2)=()-(-1),直接设定参数,使其出现波形。
图5 子界面3的仿真效果
2.4 子界面4的测试
《信号与系统》的第四章是傅里叶变换和系统的频域分析。根据书中的内容,对此模块主要分为两部分进行设计。第一部分是对于傅里叶变换,将其分为方波傅里叶变换和快速傅里叶变换进行仿真。为了更加方便地研究傅里叶变化,将该界面设计成为可输入幅度的形式,便于学习和研究不同幅度下的不同波形,以便学生对于傅里叶变换有更加清楚的认识。第二部分是对系统的频域分析,选取函数()=50/[(+1)(+5)(-2)]进行仿真。根据仿真效果可以观察到冲击响应系统不稳定;由相位裕量可以看出,当幅值为0时,频率响应的相位大于180,所以系统不稳定。仿真效果如图6所示。
图6 子界面4的仿真效果
2.5 子界面5的测试
《信号与系统》的第五章是连续系统的S域分析。以()=1/(+2+2+1)函数为例,分别用impulse()函数和freqs()函数求该系统的单位冲击响应和频率响应;最后观察该函数的仿真零极点分布图(图7),可以看到该仿真图的三个极点均位于S平面的左开平面上,所以该系统是稳定系统,故影响冲击响应的幅度和相位的是零点。
子界面6是离散系统的Z域分析,对于其仿真平台的设计,与子界面5具有诸多相似之处,此处不再赘述。
图7 子界面5的仿真效果
2.6 子界面7的测试
《信号与系统》第七章的主要内容是系统函数。对这一章也同样是分为两部分进行仿真,首先是以函数()=(j)/[(j)+10j+50]为例,求其幅度响应和相位响应,仿真结果如图8所示;然后求取RC系统电路的幅度响应。从仿真结果可以观察到,RC电路具有带通特性,随着RC值的减小,带通频率增加。
图8 子界面7的仿真效果
2.7 子界面8的测试
《信号与系统》第八章的主要内容是系统的状态变量分析。首先需要求出离散时间系统状态方程(+1)=()+()·()=()+()的()-12和()-6的仿真波形图;然后观察其特性;最后计算连续系统d()/d+10()=2(),其中()=(),初始状态(0¯)=1。利用该仿真平台,可以清晰地观察到仿真效果波形图,表明该算法的系统响应在终值附近有很高的契合度,而在初值附近有较大误差。仿真效果如图9所示。
图9 子界面8的仿真效果
3 结 语
《信号与系统》课程内容繁多,又有许多抽象的概念,同时涉及的内容十分广泛,包括时域频域以及系统的分析方法。学生在学习时常常会感到枯燥,并且伴有难以理解和掌握的情况。因此要熟练地掌握这门课程,对于辅助教学手段提出了更高的要求。因此,本文设计了基于MATLAB GUI的《信号与系统》课程仿真实验平台,主要是为了让学生和老师以及其他用户对于信号等抽象、晦涩难懂的概念有更加具体、形象生动的认知,能够更加清楚直观地观察各不同激励下的不同响应以及不同参数下的响应。该仿真平台作为《信号与系统》课程教学的辅助手段,可以使得学生对抽象知识的理解更加透彻,还可以提高学生的学习兴趣。但在仿真平台的应用上还有待进一步改进,在后续工作中需要继续完善、细化平台的功能。