时间:2021年05月21日 分类:推荐论文 次数:
摘要:该文使用开源的Python语言,利用PyQt5设计出友好简洁的GUI界面,设计了信号与系统实验仿真平台,并结合学校实际,对教学内容、教学方法及考核方式进行了改革。实践结果表明,该平台界面友好、操作简单,参数设置方便,学生在理解原理的基础上能够很好地完成实验内容。教学过程中通过引入工程应用案例作为开放性实验,提高了学生的工程实践能力和编程能力,取得了较好的教学效果。
关键词:信号与系统;实验平台;Python;GUI
信号与系统课程是工科类大学电子信息和通信类专业的核心课程,为使课程内容的理论与实践密切结合,当前改革的主要任务是将理论分析与大量工程案例应用相结合[1-3]。该课程涉及学科多、理论性强、概念较抽象,为提高学生学习的积极性,大多数高校在课程中都加入了基于MATLAB软件的相关实践教学内容,金波[4]等利用MATLAB的GUI编程方法设计了教学辅助平台,方便学生形象直观地理解、掌握课程中的基本知识[5-6]。
朱娟娟等[7]以信号与系统MATLAB的实践教学为出发点,通过建设在线开放实践课程,提高课堂吸引力和学生对基本知识的理解力。MATLAB软件将数值分析、矩阵计算、科学数据可视化等诸多功能集成在一个视窗环境中,功能强大。
但它是美国MathWorks公司出品的一款商业软件,若用于学术、研究或其他用途,需获得版权授权许可,价格不菲,且存在被禁用风险。Python是开源语言,使用者可自由地发布软件的拷贝,阅读源代码,把其中的一部分用在新的自由软件中也不用担心版权问题。Python结构清晰、简单易学,可移植性强,在科学计算、机器学习、数据处理、数据挖掘等领域具有广泛应用[8]。
有鉴于此,我们在信号与系统实践教学过程中使用Python作为教学语言,设计了基于PythonGUI的信号与系统实验教学仿真平台,并结合我校学生实际,设计了层次化的实验教学内容,以及全过程、多维度的考核评价方法。平台设计思路实验仿真平台是为信号与系统课程及其实验教学开发的辅助教学系统,教师可以通过软件系统在课堂和实验中进行教学演示[2],学生可以通过操作教学平台,改变信号和系统参数,观察实验现象,从而加深对基本概念、基本原理的理解。
1.1平台架构
平台由一个主界面和若干子界面构成,采取自顶向下的设计方法,主界面由四个固定的实验模块和一个开放性的实验模块组成。其中四个固定的实验模块涵盖了信号与系统课程的基本内容,包括连续信号与系统的时域分析、连续信号与系统的频域分析、连续系统复频域分析、离散信号与系统分析部分,以及12个实验项目子界面。每个子界面相互独立,可在任意界面上输入参数观察实验结果。开放性实验模块是待开发的模块,学生通过对基础实验的学习,可根据实验任务自主设计实验方案、编辑界面、添加实验项目等。
除了可视化仿真工具Simulink的功能及一些专业性很强的工具箱目前尚无法替代外,MATLAB的大部分常用功能都可以在Python中找到相应的扩展库[9]。Python具有丰富的标准库和强大的第三方库生态系统,与MATLAB等商业软件不同,其众多扩展库是由许多社区分别维护和发布的,因此需要花费一定时间和精力来选择、下载安装实际需要的扩展库。结合信号与系统实验课程,需要安装用于科学计算的NumPy、SciPy、SymPy扩展库和实现绘图与可视化的Matplotlib扩展库,以及实现GUI界面的PyQt5扩展库。
数值计算库NumPy以数组为数据处理对象。SciPy是数学、科学和工程计算包,它在NumPy基础上添加了科学计算所需要的各种工具,如:线性方程组求解、特征值和特征向量求解等与线性代数相关问题使用的LAPACK库、快速傅里叶变换使用的FFTPACK库、常微分方程求解使用的ODEPACK库、非线性方程组求解和最小值求解等使用的MINPACK库等,SciPy中signal模块提供了信号处理方面的很多函数,包括卷积运算、滤波及滤波器设计等方面的内容[9]。
符号运算库SymPy支持符号计算、微积分、解微分方程等方面的功能,其中积分可计算定积分、不定积分和多重积分。除此之外,实现三维数据可视化的VTK库及用于GUI编程的Tkinter库、wxPython库、Jython库等可以根据需要自由选择。
1.2设计步骤
在GUI界面编程中,当改变一个控件的状态时,通常需要通知另一个控件,来实现对象间的通信。在MATLAB软件中主要使用回调机制,在PyQt中采用的是信号与槽的机制,即在编写一个类时,要先定义该类的信号与槽,在类中信号与槽进行连接,实现对象之间的数据传输。实验平台的界面布局是先设计总界面,再设计子界面,最后在子界面上设置系列控件,为GUI对象控件编写槽函数,并将所有子界面集合在总界面上。设计主要步骤如下。
(1)使用PyQt5可视化界面设计工具QTDesigner设计主界面及子界面,使用PythonPyUIC工具将界面UI文件转化成Py文件,为后续实现界面功能做准备。(2)结合信号与系统知识能力点和关联度,整体规划课程模块中的实验项目,完成仿真系统架构中基础实验内容程序编写,作为事件函数。(3)利用信号与槽的机制,为GUI对象控件编写槽函数,实现对象间的通信。(4)将所有界面关联起来实现界面转换,最后利用Pyinstaller工具生成独立运行程序文件,方便学生使用。2实验平台的设计与实现制作UI界面一般可以通过UI制作工具和纯代码编写两种方式实现,本实验平台通过使用QTDesigner实现。这是一个强大灵活的可视化GUI设计工具,可降低平台开发难度,提升学生兴趣和参与度。
2.1主界面的设计
平台主界面模块需实现进入系统、退出系统、跳转到子界面的功能,由主界面UI文件(Main.ui)、主界面Py文件(UI_Main.py)和界面功能实现Py文件(Main.py)组成。
3实验仿真平台教学应用
信号与系统实验课是我校信息科学与工程学院通信工程、电子信息工程专业本科生的一门专业基础课,采用分层次的教学内容,以及常规基础实验与开放性实验相结合的方式,目的是满足不同层次学生的学习需求。在通过基础实验熟练掌握理论知识基础上,采用项目驱动方式指导学生设计工程应用型的实验内容,有意识地培养学生将理论知识应用于工程实践的能力[10-12]。
3.1教学内容
信号与系统实验课程共16学时,普通班和实验班开设学期为第学期,民班开设学期为第学期。我校本科生源构成复杂,基础参差不齐,总体质量不高,但实验班的许多学生都参加了学科竞赛或教师的科研项目。为此,主要面向实验班学生的开放性实验设计了综合实验和创新实验两个难度等级。基础实验为必选实验,综合实验和创新实验为选做实验。考虑到我校学生个体差异比较大,层次性的实验内容设计能够满足不同层次学生的学习需求,学生可根据自己的兴趣、能力自主选择,也从一定程度上激发了学生的学习热情。在创新实验中,还可根据执行情况灵活设置教师科研项目和学科竞赛题目[13]。
3.2教学实施
基础实验和开放性实验是同步进行的,一方面学生需要完成基础的验证性实验,对基本理论、重要概念进行理解和掌握;另一方面学生根据开放性实验题目,结合所学知识,完成实验方案的设计及程序的编写、调测、优化,具体实施步骤及时间节点。
开放性实验分为四个阶段。第一阶段为确定题目。开课第周学生通过自主创建团队、自主择题、团队讨论等方式确定题目。在此过程中,充分发挥学生的主体性和学习热情。第二阶段为确定实验方案。需要在第2~4周内完成,学生要充分理解课题的任务,查阅资料,熟悉相关理论,明确实验目的,并自主进行实验设计,撰写实验方案。实验方案在第周进行集中答辩,并根据答辩情况进行方案的优化与改进。
第三阶段为实验实施。根据自己设计的实验方案编写的程序在运行过程中会遇到各种问题,可就此在组内进行讨论,也可与教师进行讨论。教师根据学生的完成情况,可灵活拓宽实验深度。如在语音去噪系统实验中,在学生掌握传统、简单的语音去噪方法后,可以引导他们尝试基于深度学习的语音去噪方法,使用深度学习中的网络模型来进行去噪处理,锻炼学生解决复杂问题的能力。第四阶段为结果验收。安排在课程的最后一周进行,并根据学生的汇报向小组各成员提问,了解其知识掌握情况和贡献度,记录每个学生的表现,作为最终成绩的一部分。
信号系统论文投稿刊物:《电气电子教学学报》(双月刊)创刊于1979年,由教育部高等学校电子信息与电气学科教学指导委员会;高等学校电子信息科学与电气信息类基础课程教学指导分委员会;东南大学主办。
4结语
使用Python设计了信号与系统实验仿真平台及与之相适应的实验教学体系。课程效果问卷调查显示,学生对实验内容和教学方法的满意度评分较高。学生普遍反映收获颇多,尤其在进行开放性实验的过程中,在掌握和巩固理论知识的同时,还学会了运用理论知识来解决具体问题,很有成就感。目前,开放性实验的工程案例还不够丰富,涵盖范围也不够广,有待后期进一步完善。
参考文献(References)
[1]郑君里,谷源涛.试谈“信号与系统”课程理论与实践之结合[J].电气电子教学学报,2014,36(3):15.
[2]冯英翘,宋超,黄晓红,等.面向专业应用型人才培养的信号与系统课程改革[J].华北理工大学学报(社会科学版),2020,20(2):8588,126.
[3]徐进,杨新盛,于丽红,等.信号与系统课程多模式教学探索[J].大学教育,2019(6):9496.
[4]金波.基于MATLAB的“信号与系统”实验演示系统[J].实验技术与管理,2010,27(12):104107.
[5]郭建英.MATLAB在信号与系统课程教学中的应用研究[J].山西电子技术,2020(2):7375.
作者:陈娟,陈雯,石飞,王建英,胡英