信号与系统仿真系统设计
2012-05-12吕治国
吕治国
(洛阳理工学院计算机与信息工程系,河南洛阳471023)
“信号与系统”是高等工科院校通信与电子信息类专业的一门重要专业基础课程,占有较高的学分,也是信息类专业硕士研究生入学的必考课程。其中的概念和分析方法广泛应用于通信技术、信号与信息处理、电路与系统等众多领域,为学生学习“通信原理”、“数字信号处理”、“数字图像处理”等众多后续相关课程奠定重要基础。是一门承前启后的关键课程,引导学生从电路分析领域到信号处理和传输领域,因此,让学生较好地掌握该课程的基本理论知识和基本分析方法,对学生进一步学习相关理论知识,以及毕业后从事专业工作能力的培养,都具有极为重要的作用。
但是,该课程概念抽象,理论性极强,涉及知识面广,主要以数学推导为核心,应用的数学理论和数学公式多,如可积分,可求导,级数,留数定理等等。计算又十分抽象、复杂、烦琐,如卷积、积分。如果仅依靠传统的黑板加粉笔教学模式和做课后习题来理解巩固课程的教学内容,对应用性较强内容不能实际动手调试分析,学生很难真正理解它的本质意义和知识点之间的内在联系,不能学以致用,教学效果也将会受到限制[1]。因此,如何把抽象的数学概念和推导与实际应用联系起来,帮助学生理解与掌握该课程中的基本原理及基本分析方法,培养学生综合应用所学知识解决实际问题的能力,是该课程教学中要解决的重要问题。因此,在信号与系统课程中都设置了大量的实验环节来巩固和加深对信号与系统理论教学中重要概念和理论的理解。
MATLAB是matrix和laboratory前三个字母的缩写,其含义为矩阵实验室,是MathWorks公司推出的数学类应用软件。经过20多年的不断发展与完善,MATLAB已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图形处理系统、MATLAB数学函数库和MATLAB应用程序接口五大部分组成的功能强大的系统。MATLAB由主包、三十多个扩展功能和应用学科性的工具箱(Toolboxes)组成。它具有顶尖的数值计算功能,强大的图形可视化功能及简单易学的科学便笺式工作环境和编程语言,深受工程技术人员和科技人员的喜爱,并成为计算机辅助教学的基础软件。借助于MATLAB软件可以帮助学生完成大量的数值运算,并将对信号与系统的分析进行可视化建模,有助于对抽象理论原理的理解[2]。本文利用Matlab的GUI界面编程建立了一套信号与系统仿真演示系统,帮助学生理解相关的概念和理论。该系统界面友好,操作简单,既可作为教师课堂上的教学演示,也可作为学生课后自学和复习的工具。
1 系统设计
该演示系统以信号与系统课程内容联系为框架,把课程内容逐一放在自己的小框架内。系统构架采用模块化方式,根据课程内容将演示系统分为以下几个主模块,即基本信号和基本运算,连续时间系统时域分析,频域分析,复频域分析,离散时间系统时域分析,Z域分析,状态变量。每个主模块又分别由若干子模块组成,比如基本信号的显示和运算,卷积,信号的拉氏变换、傅里叶变换,Z变换;系统频率特性等小单元。上下级单元模块采用多级嵌套形式,主界面中显示主系统入口,点击相应模块标签菜单目录即可进入相应模块界面。主界面如图1所示,以下就以具体的几个小模块为例进行说明。
图1 仿真系统主界面
1.1 信号的分解合成
任何一个周期函数在满足一定条件下都可以分解为傅里叶级数。比如周期性的方波展开为傅里叶级数,展开公式为:
分别显示这个式子中的前一项到前5项,比较波形变化情况,可以帮助学生非常轻松地理解傅里叶级数的意义。图2中左图是前5项叠加的结果,图2中右图是前2项叠加的结果,从图中可以清楚地看到,取的项数越多,误差越小,和原波形就越接近。
图2 信号的分解和合成结果
1.2 信号的频谱显示
学生刚开始接触频域的信号时候,对于一个信号既能在时域显示又能在频域显示感到很不理解。对于几个在时域中混叠在一起的信号还能在频域把他们分开更是费解。我们把自己说的一句话输入到电脑中,分别显示它在时域中的样子,还显示它在频域中的样子,帮助学生们直观地了解了同样一个信号在不同域中的显示情况,为后续的滤波知识打下基础。图3中左图是语音信号的时域显示,中图是频域显示,纵坐标是各个频率点的信号幅度值,右图也是频域显示,纵坐标以分贝为单位显示。
图3 信号的时域频域显示
1.3 信号的滤波
对于几个在时域中混叠在一起的信号还能在频域把他们分开的原理学生一直不是很理解。针对这个抽象的原理,可以采用直观的图形来帮助学生理解。首先给出一个单边指数信号f1=exp(-0.5*t),信号的图形如图4中左上图所示。然后再给出一个在时域中互相重叠的信号f=f1+f1.*fc1+f1.*fc2+f1.*fc3,fc1,fc2,fc3 是三个载波信号。该重叠信号在时域中的样子如图4中右上图所示。信号f1的频谱如图4中的左下图所示,而重叠信号的频谱如图4右下图所示。从图中可以看出,原信号的频谱和在三个载波处的频谱互不重叠,可以在频域中分开。又根据时域信号和频域信号携带信息等价的结论,就可以完全得到原信号f1的全部信息[3]。这个原理在调制解调,滤波等方面都有用到。
2 结论
基于MATLAB设计本身不能脱离MATLAB运行环境。为了使用方便,将其生成exe可执行文件,在 Command Window中输入mcc–m -a语句将m文件生成exe文件和ctf文件,在未安装MATLAB的计算机上安装MCR组件后就可以直接运行该程序了[4]。
本文针对信号与系统课程抽象繁杂,理论性较强难以进行交互式教学的特点,在信号与系统教学中引入MATLAB软件,介绍了利用MATLAB的GUI界面编程方法构建信号与系统仿真演示系统的方法,并介绍了几个典型的演示实例。该系统界面美观,清晰,具有良好的人机交互界面。学生通过学习编程,编写修改程序,绘制曲线,观察波形,分析实验结果,大大激发了学生的学习兴趣,使学生很快掌握了编程方法和解决实际问题的技巧。实践证明该系统可以使抽象的概念定理和复杂的数学推导简单直观化,并在教师学生共同地、不断地修改下日趋成熟,最后改善了教学效果,对相关学科课程的教学也起到了促进作用。
[1]熊庆旭.信号与系统中三个层次教学探索[J].电气电子教学学报,2009,(1):5 -7.
[2]陈垚光,毛涛涛,王正林,等.精通 MATLAB GUI设计[M].北京:电子工业出版社,2008.
[3]张威.MATLAB基础与编程入门[M].西安:西安电子科技大学出版社,2004.
[4]何强,何英.MATLAB扩展编程[M].北京:清华大学出版社,2002.