“信号与系统”仿真演示系统设计
2012-10-12俎云霄
俎云霄,贾 越,李 奔,李 勇
(北京邮电大学电子工程学院,北京100876)
“信号与系统”是高等院校电子信息类专业的一门非常重要的学科基础课,对后续专业课,如“数字信号处理”和“通信原理”等具有承上启下的作用。如何让学生理解该课程中的基本物理概念,掌握基本的分析方法并灵活运用理论工具解决实际问题,是教学过程中所要解决的重要问题。为此,本文利用Matlab的GUI界面编程建立了一套信号与系统仿真演示系统,帮助学生理解相关的概念和理论。该系统界面友好,操作简单,既可作为教师课堂上的教学演示,也可作为学生课后自学和复习的工具。[1-2]
1 系统构架和界面设计
该演示系统以“信号与系统”课程内容为基础,对课程内容逐一演示。在系统构架设计方面,采用模块化方式,根据课程内容将演示系统分为两个主模块,即“连续时间信号与系统”和“离散时间信号与系统”。每个主模块又分别由若干子模块组成。在“连续时间信号与系统”主模块中有5个子模块,基本信号时域性质,卷积,信号的傅里叶变换,拉氏变换及系统频率特性和傅氏变换与通信系统。在“离散时间信号与系统”主模块中也有5个子模块,分别是:离散时间信号与卷积,基本函数的Z变换,Z变换的基本性质,离散时间系统的频率特性和离散傅里叶变换的性质。
系统界面为多级嵌套形式,主界面中显示课程名称和系统入口,点击“进入目录”即可进入主模块界面。主模块界面包括“连续时间信号与系统”和“离散时间信号与系统”两个按钮,点击即可进入各子模块。子模块采用人机交互命令,通过输入相应参数或拖动滑动条调整参数数值即可得到相应波形。整个系统界面直观清晰。
演示系统采用模块化的设计思路,在设计每个模块前,首先确定模块的演示内容以及各波形显示图的布局,然后在GUI的组件布局编辑器中添加各个相应的组件并设置所需的属性。组件属性分为三类:①图形化控件,包括按钮、编辑框、列表和滚动条等;②静态元素,包括窗口和文本字符串;③菜单和坐标系。最后,根据添加组件的属性,在生成的m文件中对每个组件进行具体功能的编程[3-5]。
2 典型模块的设计
2.1 傅里叶变换的时移特性
1)基本设计方法
我们利用Matlab提供的FFT函数,分别求出原信号及经过时延后信号的幅频特性和相频特性。通过改变时移参数t0,可以观察信号频谱随t0的变化。具体采用如下步骤。
(1)对信号以间隔T=0.05s进行离散化,从而构成一个数组。因为FFT函数对包含2n(n为正整数)个数值的数组进行操作时,运行速度非常快,所以这里设计该数组共包含Nb=4096个数值,即在时域上横跨Nb·T=204.8s的范围;
(2)对包含这Nb=4096个数值的数组进行FFT运算[6],并将运算结果利用fftshift移至零频中心,再乘以T,将其转换为模拟频谱;
(3)以频率间隔Δω=2π/Nb·T作频谱图,对应的频点为k·D,其中k=floor[-(Nb-1)/2:1:(Nb-1)/2] ,这里floor函数为向下取整函数。
2)操作使用
启动系统后,点击:“进入目录→连续时间信号与系统→信号的傅里叶变换→傅里叶变换的时移特性”,进入演示界面,在界面的右上角选择要观看的信号类型即可。
本演示系统选择了两种典型信号——矩形脉冲信号和指数信号作为示例。图1即为矩形脉冲及其移位信号的频谱图。图中显示的6个子图中,左侧3幅分别为原信号f(t)的时域波形、幅度频谱和相位频谱,右侧3幅为时移后f(t-t0)的时域波形、幅度频谱和相位频谱。在本图中,显示的是信号右移t0=0.23271的频谱图。调节图中上部中间的滑动条可改变t0。点击右下角的“关闭”按钮可以退出此界面。图中,时域波形的横轴表示时间,其单位是“秒”。幅度频谱的横轴表示角频率,单位是“弧度/秒”,纵轴表示频谱幅度;相位频谱的横轴与幅度频谱相同,纵轴表示相位,单位是“度”。随后图2和图3的坐标均与此相同,不再重复。
图1 傅里叶变换的时移特性演示界面
2.2 抽样信号恢复连续时间信号
1)基本设计方法
我们对于给定的信号按照周期Ts进行抽样,假设低通滤波器的截止角频率为ωc,则由抽样信号f(nTs)恢复f(t)的表达式为
在Matlab中也是根据此式恢复原函数f(t),这里设定n的取值范围为-50~50。求和部分利用矩阵相乘实现,再设t=-9:0.005:9,由此得到恢复信号的波形。
2)操作使用
系统启动后,点击:“进入目录→连续时间信号与系统→傅氏变换与通信系统→抽样信号恢复连续时间信号”,进入演示界面。调节Ts可以观察不同抽样周期情况下信号的恢复情况。例如临界采样、过采样和欠采样。本系统设置的临界采样周期为Ts=1.57。
图2所示为过采样时的情况。图2(a)中自上而下分别为原始信号、抽样信号和低通滤波器的时域波形(对低通滤波器显示的是其冲激响应)和频谱。其中原始信号及其频谱是假设的对应关系,因为本演示的目的是说明信号经抽样后的恢复问题。点击图2(a)中右下角的“下页”按钮可显示恢复信号、原始信号及恢复信号和原始信号的误差。如图2(b)所示是其误差放大100000倍后的波形。
2.3 散时间系统频率特性
1)基本设计方法
我们首先用str2num()函数实现系统函数,按照降幂顺序将系统函数的分子和分母多项式的系数以数组形式输入,然后用函数freqz()将输入的系数转换成系统函数H(z)的表达式,最后分别用函数abs(),angle()和zplane()画出系统函H(z)的幅频特性、相频特性和零极点图。
2)操作使用
系统启动后,点击:“进入目录→离散时间信号与系统→离散时间系统频率特性→开始仿真”,进入演示界面。首先跳出如图3右下所示的对话框,等待用户输入系统函数,点击“OK”即可显示幅频特性曲线、相频特性曲线和零极点图。图3所示的三条曲线是网络函数H(z)=(z+1)/(z2+2z+2)的相关图形。
3 执行文件的生成
图3 离散时间系统频率特性演示界面
系统基于Matlab设计本身不能脱离Matlab运行。为了使用方便,将其生成exe可执行文件,以便可以在没有安装Matlab软件的计算机上运行。
生成执行文件的方法如下:在Windows操作系统安装MCR组件,其默认路径为 oolboscompilerdeploywin32;在Command Window中输入mcc-m-a格式语句将.m文件生成exe文件和ctf文件;在未安装Matlab的计算机上安装MCR组件;将生成的exe和ctf文件拷贝到MCRv70目录中并设置环境变量—变量名:Path,变量值:MCRv70 untimewin32即可。完成上述操作后,我们就可在未安装Matlab的计算机上执行该系统的exe文件。
4 结语
本文介绍了利用Matlab的GUI界面编程方法构建信号与系统仿真演示系统的方法,并详细介绍了几个典型的演示实例。整个系统界面直观、清晰,导航方便,且配有简要文字说明,具有良好的人机交互界,可通过滑动条或手动输入对参数进行修改,并将结果实时显示在演示界面中。通过该系统的实际应用,学生的学习兴趣,也使学生对所学内容课程有了更深刻的理解。
[1] 郑君里,应启衍,杨为理.信号与系统(上册).第二版[M] .北京:高等教育出版社,2005
[2] 郑君里,应启衍,杨为理.信号与系统(下册).第二版[M] .北京:高等教育出版社,2005
[3] 陈垚光,毛涛涛,王正林,王玲.精通MATLAB GUI设计[M] .北京:.电子工业出版社,2008
[4] 张威.MATLAB基础与编程入门[M] .西安:西安电子科技大学出版社,2004
[5] 甘俊英,胡异丁.基于MATLAB的信号与系统实验指导[M] .北京:清华大学出版社,2007
[6] 谷源涛,应启珩,郑君里.信号与系统——MATLAB综合实验[M] .北京:高等教育出版社,2008