APP下载

基于Python的“数字信号处理”课程教学改革

2018-04-15黄晓辉唐慧丰余文涛

电气电子教学学报 2018年1期
关键词:数字信号处理信号处理课程设计

黄晓辉, 唐慧丰, 余文涛, 王 博

(解放军外国语学院, 河南 洛阳 471003)

0 引言

“数字信号处理”是电子信息与计算机专业的一门重要专业基础课,该课程理论性强,概念抽象,数学公式繁多,公式推导复杂,其内容较难理解与掌握[1],因此在教授该课程时,除了课堂讲授、公式推导和理论作业之外,必要的动态演示、实验验证是帮助学生理解、掌握知识的有效方法[2]。当前,有条件的高校通常会使用Matlab作为辅助工具,通过增加课堂演示、课程实验以及课程设计来辅助教学,这样既丰富了课程教学内容,同时又增加了教学方法的灵活性与交互性,因而取得了不错的教学效果[3,4,5]。

作为集数值分析、矩阵运算、信号处理和图形展示于一体的科学计算平台,Matlab具有丰富的科学计算工具包,可以方便地实现数字信号处理的理论验证和系统设计仿真,使学生从繁重的手工数学运算中解脱出来,将学习重点转向对课程基本概念、原理的理解与运用上[6]。然而在实际教学实践中发现,使用Matlab作为辅助教学工具存在较多的现实问题,主要有以下几点:①Matlab是一款付费软件,其授权费用相当昂贵,对于一般学生来说较难承受,即便对于获得授权的高校来讲,由于Matlab体量具大,建立一个供多人实验用的Matlab环境需要很大的硬件和软件投入,对学生自带电脑的性能要求也较苛刻。虽有很多高校和学生选择使用公开的简化免费版本,但其功能、性能都与正版不可同日而语,总体来讲Matlab的使用成本较高;②尽管Matlab支持脚本以及面向过程和面向对象的编程,但在代码风格、数据定义、语法规则等方面都与C/C++有显著的差别。即便学生已学习过C/C++语言,但在使用Matlab时仍要耗费相当多的精力去重新学习,因此普遍感觉入门较难;③Matlab提供的大部分函数库不开源,学生在使用过程中只能单纯的调用,而无法获知其内部实现,因此在帮助学生深入理解与应用所学知识上也并没有起到预期的作用;④Matlab的设计初衷是为了方便科学计算问题的建模,这与“数字信号处理”课程内容强调的基础性、应用性并不匹配。同时在现实中,Matlab也主要面向高层次的科研人员,而在工业界的应用领域相对较窄,这对于大多数以满足现实应用、适应工作需求为学习目标的本科学生来讲没有足够的吸引力,学生只把其当作是一种临时的工具,在课程结束后就无用武之地,导致学生学习Matlab的积极性不高,同样影响到该课程的教学质量。

以上都是教学过程中实际存在的问题,已经成为进一步提升“数字信号处理”课程教学质量亟待解决的问题。近年来,随着Python语言的快速发展与壮大,使用Python取代Matlab、建立基于Python的“数字信号处理”课程教学体系成为解决以上问题的可行方案。

1 引入Python的优点

Python是一种解释型高级程序设计语言,支持脚本以及面向过程和面向对象的编程,并且具有代码简洁、语法简单、可扩展性好的特点[7]。Python多样化的编程方式使之具有与Matlab同样出色的交互性和灵活性,同时比具有Matlab更纯粹的面向对象特性。作为一种通用编程语言,Python程序可以不加修改地在Linux、Windows、Mac、Palm等多种系统平台上运行,其源代码可轻易的嵌入到C/C++程序之中,而C/C++程序也可作为第三方库供Python程序直接调用,而这些功能是Matlab难以实现的。Python的科学计算生态比Matlab要丰富得多,语言也更加简洁,入门更容易。对于数字信号处理来讲,Python的第三方库numpy可提供高效的数据组织、处理功能;scipy可提供多种数值计算功能,包括频谱分析、滤波器设计等典型的数字信号处理方法;matplotlib可提供丰富多样的图形绘制功能,构建优美的图形交互界面。针对现实应用中普遍存在的语音、图像等数字信号,Python标准库中的wave以及pyaudio可以完成.wav格式音频文件的处理,还有更多的第三方函数库可以实现各种变换域分析与处理;而图像处理库PIL可以处理常见格式的数字图像数据,再利用numpy、scipy以及matplotlib就可以完成对真实数字信号的谱分析、滤波以及图形展示。与Matlab数GB的软件体积相比,这些第三方函数库加上Python标准库的总体量还不到200MB。因此,将Python引入“数字信号处理”的教学,并基于Python设计系统的教学改革方案有以下优点:①减轻高校以及个人对实验环境的投入成本;②编程的简洁性以及开放的项目社区为初学者提供了较低的学习门槛和丰富的学习资源;③开源的第三方函数仓库为学生深入研究课程内容并应用所学知识解决实际问题提供了有力支撑;④广阔的应用前景为学生学习Python并进行深层次的研究与项目开发提供了学习动力。

本文基于Python进行“数字信号处理”课程的教学改革,教学效果在实践中得到了检验。

2 教改思路与方案

当前,我院“数字信号处理”课程教学分为课堂教学和课下自学两部分,课堂教学包括理论教学和实验教学,课下自学包括课程设计和网络课程自学。

课堂教学中,理论教学与实验教学穿插进行,根据教学内容定期安排实验课程,以做到现学现用;课程设计的选题采用任课教师提供与学生自主选题相结合的方式进行,在课程教学完成后由学生自主完成,并提交课程设计报告,成绩计入最终考核成绩;网络课程自学主要依托校园网网络课程接口,其上具有在线答疑、文档资料上传下载、作业布置与提交、教学视频观看等功能,提供丰富多彩的自主学习环境。

2.1 课堂教学部分

课堂理论教学主要分四步实施,首先是课程引入,主要通过教师口述和PPT展示对关键知识点进行直观展现,使学生建立初步的整体印象,激发学习兴趣;接着是理论讲授环节,主要由教师进行理论讲解、数学推导等内容,旨在使学生打牢理论基础;其间穿插着实验验证,包括根据授课内容编写Python源码进行现场演示。由于Python语法简单,代码简洁易懂,又有成熟的第三方开源库可资利用,因此便于学生深入理解所学知识以及掌握如何将所学知识转化为实际应用;最后是总结答疑,即对课程授课内容总结,布置理论和上机作业,现场辅导答疑。例如,在离散傅里叶变换一节,可通过以下四个阶段组织教学:第一阶段10分钟左右,概要介绍授课内容,包括DFT的定义、原理、应用场景等,再调用pyaudio库读入一段原始语音信号,选取中间1024个样本构成numpy数组,调用scipy中FFT函数对其进行傅里叶变换,最后调用matplotlib展示变换前后的时域、频域曲线,并对比变换前后信号的特点;第二阶段20分钟左右,讲解DFT的原理,现场进行公式推导,并详细介绍其基本特点;第三阶段10分钟左右,根据DFT公式的定义编写Python源码,并对原始语音信号进行傅里叶变换,并与第一阶段Python库函数变换的结果进行对比。第四阶段10分钟左右,主要是总结授课内容,布置理论作业和上机作业以及现场辅导答疑。

实验课程教学以集中安排、随堂辅导、自主完成的形式进行,分三个阶段组织实施,同时编写配套的Python实验教材供学生参考使用。第一阶段为任务布置阶段,由教师介绍并布置实验任务,提供实验材料和参考资料;第二阶段为实施阶段,由学生根据实验题目自主编写Python代码进行实验,记录实验数据并分析实验结果。由于Python软件体积较小,安装过程简单,因此极大地方便了学生搭建实验环境。另外,其语法与CC++类似,入门较Matlab容易,降低了学习门槛,便于学生学习使用;第三阶段为实验总结阶段,由学生整理并撰写实验报告,任课教师作总结讲评。课程共设置离散信号时频分析、离散系统时频分析、数字滤波器设计、数字信号滤波处理和语音信号数字滤波共5个大项实验,要求学生自己按照实验教材编程实现,并与所提供的Python库函数作对比,以加深学生对所学知识的理解程度。

2.2 课下自学部分

课程设计以培养学生运用所学知识解决实际问题为目标,由任课教师依据科研课题中遇到过的信号处理需求设置相应的课题,学生根据兴趣自主选题并独立完成,最后提交Python源码和课程设计报告。由于Python的开源属性,网上有众多系统而全面的学习资料供学生查阅,可以避免学生因遇到困难无法及时找到解决方案而消极应付。例如,对机房低噪音环境下录制的语音信号进行降噪处理,要求学生根据给定的公式,编写源码对语音信号进行时域的分帧、加窗、预加重以及某项特征参数提取,并将最终结果与Python库函数的处理效果作对比。在此过程中,学生对于在实验课程中已经实现过的公式可调用Python库函数,对于没有实现过的公式要求自己手动实现。

网络课程依托校园网网络课程接口为学生提供课下自主学习服务,包括在线答疑、文档资料上传下载、作业在线布置与提交以及教学视频观看等功能。在线答疑可及时解决学生学习过程中遇到的问题,避免问题堆积过多,使学生失去学习兴趣。与课程相关的Python资料会及时上传到网络课程相应栏目供学生下载学习,包括教学课件、参考教材、基础教程、学习网站等。网络课程在师生之间建立了便捷的课下沟通平台,为学生自主学习提供了丰富的学习资源,弥补了课堂教学时间紧、任务多、不能面面俱到的不足。由于Python应用广泛,新的开发项目层出不穷,因此对学生学习前沿知识、提升动手实践能力会有较强的吸引力。

将Python引入“数字信号处理”课程教学,丰富了课程教学内容,拓展了教学方法,便于学生理解教学内容并开展自主学习,有利于培养学生的动手实践能力,为将来走向工作岗位打下良好的基础。需要注意的是,Python完全开源的特点也可能为学生抄袭网上答案提供方便,因此在教学过程中要着力强调诚信的治学态度。实验教学只提供必要的实验平台和辅助材料,而更重要的是严格把控课程设计的选题和完成质量,从思想上和行动上杜绝可能发生的抄袭行为。

3 结语

本文所提的基于Python的“数字信息处理”课程教改方案从2014年得到学院立项资助并开始部署实施,在学院所有开设该课程的本科专业进行试点。(黄晓辉等文)

试点过程中,2011级学生仍然用Matlab为工具展开教学,2012级学生分为两个班次分别以Matlab和Python为工具展开教学,而2013级全部使用Python实施教学,根据教学过程中学生的学习态度和作业完成情况,以及考核成绩及格率、优良率、课下自主学习时间等统一综合性指标,调查问卷的统计数据结果显示,使用Python的课程教学效果明显好于使用Matlab的教学效果,证明本次教学改革方案科学合理,解决了之前遇到的现实问题,有效提升了教学质量。

参考文献:

[1]王艳芬,史良,王刚.基于Matlab实验环境的《数字信号处理》课程新实验开发[J].北京:实验技术与管理,2002,19(3):61-68.

[2]张晓光,王艳芬,王刚.基于Matlab的数字信号处理课程教学探索[J].武汉:高等教育研究,2007,24(2):45-46.

[3]陈俊杰,周晖.数字信号处理课程教学改革初探[J]. 北京:中国教育技术装备,2016(12):99-100.

[4]罗忠亮. 数字信号处理课程教学改革实践探索[J]. 福州:教育评论,2015(2):124-126.

[5]王艳芬,张晓光,王刚.电子信息类专业信号处理课程群的建设与改革实践[J].北京:实验技术与管理,2015,32(4):11-14.

[6]黄永平. 数字信号处理精品课程建设的探索[J]. 北京:教育与职业,2014(32):188-189.

[7]张俊生,郭彩平,楼国红. Python在数字信号处理中的应用[J].南京:电气电子教学学报,2015,37(4):115-117.

[8]张若愚.Python科学计算[M]. 北京:清华大学出版社,2016年4月.

猜你喜欢

数字信号处理信号处理课程设计
龙凤元素系列课程设计
中秋明月
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
《数字信号处理》中存在的难点问题解析
电子信息工程专业数字信号处理课程改革与研究
SPTool在数字信号处理课程教学中的应用
基于Articulate Storyline的微课程设计与开发