卷积的教学演示程序
在时域内,连续卷积和离散卷积是求解线性非时变系统零状态响应的重要方法,特别是激励信号为时限信号时尤其如此。卷积的计算比较复杂,是信号与系统分析中的重点和难点,特别适合用计算机来计算。以往的卷积积分多用FORTRAN、C、VB等语言编程,不仅编程繁琐,而且可视性差。用MATLAB来计算卷积积分问题要比用C、FORTRAN等语言完成相同的事情简捷得多。
MATLAB是现今国际公认的最优秀的科技应用软件,该软件有3大特点:具有数值和符号计算、计算结果和编程可视化、数学和文字统一处理、离线和在线计算等强大功能;界面友好,语言自然,指令表达式与标准教科书的数学表达式相近;开放性强,除了指令行操作的直接交互使用方式外,还带有各种扩展的工具包,如扩充MATLAB的符号计算功能、图视建模仿真功能、文字处理功能以及与硬件实时交互功能,它还有专业性很强的工具包,如信号处理、通信、控制工具包等。MATLAB作为高级应用软件还有它自己的编程语言,除内部函数外,所有MATLAB主包文件和各工具包文件都是可读可写的源文件,用户可通过对源文件的修改或加入自己编写的文件去构成新的专用工具包。这些特点使它获得了对应用学科的极强适应力,并很快成为应用学科计算机辅助分析、设计、仿真、教学以及科技文字处理不可或缺的基础软件。
MATLAB的出现给信号与系统的分析提供了很大的方便。本文结合卷积积分给出了如何应用MATLAB工程计算语言,用GUI程序设计来解决连续卷积和离散卷积的计算和演示问题。
信号卷积的数值计算
连续信号卷积积分计算实际上可用信号的分段求和来实现,即:
当时间间隔足够小时,就是的数值近似。MATLAB的conv(x,h)函数可以用来计算卷积积分的数值解。
对于离散信号的卷积,可直接调用conv(x,h)函数计算。但绘制离散的卷积波形时,3个离散信号的时间轴定位是问题的关键。
卷积的GUI程序设计
所谓GUI程序设计,简单地说,就是使应用程序具有图形用户界面,以方便用户操作。
在MATLAB中创建图形用户界面有2种方法,其一是使用图形句柄。用这种方法创建图形界面的过程相当繁琐,而且在程序编写好之前,用户图形界面是不可见的。所以为了便于创建图形用户界面,MATLAB提供了一个开发环境,帮助用户创建图形用户界面,这就是GUIDE(Graphic User Interface Development Environment )。
图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,如实现计算、绘图等。如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。
为对任意2个波形画出其卷积积分的波形,笔者编写了卷积的GUI程序设计,一个用于计算连续信号的卷积,一个用于计算离散信号的卷积。用该程序可以对任意2个有限长或无限长连续信号和离散信号进行卷积,时间t的范围可以调节。这个程序不仅可以用于课堂演示,也可以用于实际计算。适用性很强。连续信号的卷积界面及计算结果如图1、2所示,离散信号的卷积界面及计算结果如图3、4所示。
结束语
由于MATLAB的强大数值计算功能,加之MATLAB提供了一个开发环境,帮助用户创建图形用户界面,从而使卷积积分的计算和可视化变为可能。通过以上实例分析可以看到,应用GUI编程技术可以编写通用性更强的图形用户界面,使卷积积分的运算更加容易。经过实践证明,这个教学演示程序在教学中的应用效果十分理想。
(作者单位:湖北省长江大学电子信息学院)
下一篇:基于数值模拟的V形件回弹研究