面向能力培养的Matlab工具属性教学实践

2017-04-15 08:02臧睦君邹海林
电气电子教学学报 2017年4期
关键词:代码绘制编程

臧睦君, 邹海林

(鲁东大学 信息与电气工程学院, 山东 烟台 264025)

面向能力培养的Matlab工具属性教学实践

臧睦君, 邹海林

(鲁东大学 信息与电气工程学院, 山东 烟台 264025)

Matlab同时具有编程语言和科学工具两种属性。传统教学中往往将Matlab视为一种高效的科学及工程计算语言,忽略了Matlab的工具属性和应用技巧能力的培养。本文针对上述问题,提出并实施了面向能力培养的Matlab工具属性教学改革方案,突出Matlab的工具属性,培养学生的编程能力、图形绘制能力,从而掌握使用Matlab进行设计与研究的技能。

Matlab;工具属性;编程能力

0 引言

Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,适用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测等领域。鉴于此,国内高校的相应理工科专业一般均开设了与Matlab相关的课程,旨在使学生掌握运用Matlab软件解决所学相关专业课程、学科竞赛或科研课题中遇到的数学运算和求解问题[1]。

与C、C++、python等电子信息领域常用语言类似,Matlab也有一套相对独立的计算机语言,使学生掌握Matlab编程语言是一项重要的教学目标。然而与其他计算机语言不同,Matlab在图形绘制、结果显示、GUI操作、用户界面开发等方面具有强烈的工具属性。但是,目前的“Matlab基础及应用”课程教学中,Matlab的计算机语言教学占据了指导地位,其工具属性未引起充分重视。例如,被广泛采用的Matlab相关教材中,数据类型定义、程序开发、数值计算、符号计算等编程的内容占据了绝大多数课时量,图形绘制等部分的教学内容也以指令操作的教学内容为主,未能充分发挥Matlab作为仿真和研究工具的重要作用[2-5]。为了评估传统Matlab课程的教学对学生能力培养的影响,我们对完成“Matlab基础及应用”课程学习的学生使用Matlab情况进行了调查,调查对象为30名使用Matlab作为主要毕业设计工具的高年级本科生以及使用Matlab作为主要科研工具的硕士研究生(其课程成绩均为优秀)。调研结果表明,有超过90%的学生在完成课程后并不具有与科研要求相应的Matlab应用技能。例如,这些学生尚不能使用便捷的图形化显示方法、难以编写高效率的Matlab代码、对本领域的内建工具包掌握程度差等。

对重视语言属性的传统“Matlab基础及应用”课程内容进行分析后,笔者发现,将Matlab视为一种高效的科学及工程计算语言,以编程语言作为教学核心的思想是导致教学内容与实际应用脱节的主要原因。鉴于上述分析,本文提出“Matlab基础及应用”的工具化教学改革方案,突出Matlab在信息学科中的工具属性,以“与时俱进、学以致用”为原则,从教学目标、课程编排和教学考核三个层面对课程进行改革,从而使学生在课程中掌握并提高使用Matlab进行设计与研究的技能。

1 Matlab工具属性教学

“Matlab基础及应用”课程的教学目标是让学生掌握Matlab软件的使用,解决学习和科研中的问题,因此“学以致用”是教学的基本原则。现在该课程教学中往往过于强调学生熟悉Matlab的编程语言。因此,在掌握变量类型、编程语法、逻辑分支设计等内容的基础上,通过专业应用的代码量积累来培养学生的编程能力。以目前高等院校常用的Matlab教材为例,其中关于变量类型、编程语法等基础内容的教学内容均超过10课时,面向不同专业应用的代码量积累课程也占用了9到15课时[2-5]。不可否认,这种以提高Matlab语言编程能力为目标的教学可以在一定程度上加深学生对Matlab的理解,但是这种教学目标也带来一定的负面作用。首先,Matlab基础教程往往于大学二年级开设,这一阶段学生对自己的专业情况缺乏明确的认识,在不能充分了解专业背景知识,未明确研究重点与方向的前提下,积累代码量对培养学生应用能力的意义不大;其次,Matlab同时具有语言与工具两种属性,其中工具属性是Matlab区别于其他编程环境的最重要特性,忽视Matlab的工具属性会造成与实际应用有一定的脱节。

针对上述问题,通过教学实践,我们将“Matlab基础及应用”课程按照编程能力、图形绘制能力两方面分别制定教学目标,每个教学目标和内容按照基本和提高两个要求进行设计。

1.1 编程能力教学目标

Matlab编程语言的特点是语法简洁、库函数丰富,编程能力的教学要求学生掌握基本的语法和逻辑,重点讲解扩展代码量的方法,代替原来教学方案中通过课堂训练扩展代码量的方式,从而将教学思想从“授之以鱼”转化为“授之以渔”。按照这一教学思想,基本教学要求主要面向基础的数据结构与语法知识和自主学习能力。学生应该掌握的基础数据结构与语法知识主要包括:变量及其操作、矩阵的表示、数据计算、字符串、数据结构和单元结构;顺序结构和选择结构中函数的使用方法;掌握循环结构中for和while语句的使用以及程序设计和调试方法。重点掌握创建和调用M函数的方法;脚本文件和函数文件、主函数文件和子函数文件的概念,深入理解调用函数的接口化编程思路。在此基础上,掌握通过查阅Matlab帮助中心、学术资料等了解函数接口,自行扩展代码库的方法。

Matlab编程语言的另一大特点是矩阵和向量操作便捷、运算效率高,但是循环和子函数调用效率较低,矩阵化代码优化和混合编程代码优化是学以致用的重要技能。因此对于学有余力的学生,Matlab编程语言的提高要求为:熟悉矩阵化编程思想,掌握通过矩阵函数和混合代码编程优化代码的能力。

在教学实践中,笔者提出了通过一个课题同时考核学生对基础教学目标和最高教学目标掌握程度的方案。以经典问题“约瑟夫环编程”为例,在课堂讲解约瑟夫环的命题与编程思想,提示学生可以自主查询矩阵缩维函数squeeze等编写约瑟夫环程序可能用到的内建函数,通过作业、期末考试或课程设计的形式考核学生编写约瑟夫环代码的能力,并制定考核指标:①掌握了自主学习内建函数用法和基本编程知识,通过循环、分支或递归实现代码基本功能的评定为及格;②能够通过矩阵化编程思想优化代码可读性和执行效率的评定为良好;③掌握了通过矩阵函数代替循环操作技能或通过混合编程优化代码效率的评定为优秀。通过上述考核,可以全面考察学生对Matlab编程语言掌握的程度,简化以前通过基础题和拔高题区分学生掌握程度的考察方法,从而有效贯彻了“授之以渔”的教学目标。

1.2 图形绘制能力教学目标

具有强大的图形绘制功能是Matlab最重要的特性。Matlab图形绘制一直以来都是“Matlab基础及应用”课程教学的主要内容。传统教学往往将绘图教学视为Matlab编程能力教学的延续,重点讲述图形绘制函数的指令及语法,并将绘图函数的掌握作为基础教学目标。随着Matlab版本的更新,实现简单的图形绘制已不需要记忆和掌握繁琐的绘图指令,内置GUI操作已经能够取代绝大多数绘图指令。以Matlab 2015b版本绘制散点图为例,通过选定工作组变量,右键菜单中选择绘图,已经能快速实现图形的绘制,进一步点击编辑图形属性,即可进行图形线条、散点、坐标轴等构图要素的修改,而通过函数实现这些功能则需要通过指令编写繁琐的代码,因此通过代码绘制简单图形不是与时俱进的方法,将绘图教学视为Matlab编程能力教学延续的思路也不再符合技术发展的需求。另一方面,能够合理的设置图形来表达数据的含义,并能够将图形应用到文档中又是学生在学习、工作阶段必要的能力需求。

基于上述分析,为实现重视Matlab工具属性的教学,将图形绘制能力的基础教学目标设定为:掌握通过内置GUI操作绘制常见科学图表的方法;能够合理的设计图表,精准表达数据的含义;掌握将绘制的图表在文档中进行应用的技巧。传统的图形操作指令则作为提高型教学目标,仅要求学有余力的学生掌握使用内建函数绘制图形并编辑图形属性的能力;具有批量绘图代码的开发能力;熟悉绘制动态图、混合绘图等高级图形代码编写技巧。

2 Matlab工具属性教学实践

为了贯彻重视Matlab工具属性的教学目标,在教学实践中,笔者对“Matlab基础及应用”课程进行了新的编排。其中理论教学内容共26学时,围绕6个主题内容展开,其中前5个主题合计16学时为重视工具属性的编程能力和图形绘制能力教学,后10学时为实践课程,在具体实施本方案时,实践课程应根据具体专业和学生已掌握的知识做出安排与调整,6个主题的编排如下。

第一主题:Matlab环境的熟悉与基本运算(2学时)。介绍Matlab系统环境,讲述矩阵、变量、表达式的输入规则及基本运算,演示Matlab的开发环境、建立和执行M文件的方法、特殊变量及常用函数的使用,要求学生了解一般变量和函数的使用方法。

具体实施过程中,首先通过现场演示,介绍命令窗口、工作组变量、当前工作目录、搜索路径等基本环境;然后通过矩阵运算练习函数的使用,练习分为矩阵初始化、矩阵元素访问与处理、矩阵基本运算以及矩阵函数4个环节,每个环节均可替换处理内容形成例题与练习题。例如,“生成正态分布随机4维方阵,屏显输出矩阵的第2行之和,计算矩阵与数字5相乘的结果,并计算相乘后矩阵的秩”可作为一项课堂例题,随机替换4个环节的内容为“生成均匀分布随机5维方阵,屏显输出矩阵的第3列的最大值,计算上述5维方阵与5行3列的全1矩阵相乘后的结果,并将相乘后的矩阵上下翻转”作为一项练习题;最后讲述建立和执行M文件的方法,引导学生将编写的练习代码开发为M文件。

第二主题:顺序、分支、循环结构的程序设计(4学时)。介绍顺序结构和选择结构中函数的使用方法,详细讲述if、switch、for、while函数的用法,要求掌握顺序、分支、循环、递归程序设计的基本规范。

笔者以经典编程问题“约瑟夫环编程”为顺序、分支、循环、递归程序设计的核心例题,在对顺序结构和选择结构的函数进行讲解后,简要介绍约瑟夫环的命题与编程思想,并引导学生对代码进行编写。这一主题的编程练习以启发式教学为主,不应限定学生实现约瑟夫环所采用的方法、代码效率、代码可读性等内容,允许学生自由发挥,能够达到熟练应用顺序结构和选择结构函数的程度即可。

第三主题,函数文件的定义和调用(2学时)。介绍脚本文件和函数文件、主函数文件和子函数文件的概念,然后讲授创建和调用M函数的方法。通过M函数的调用演示接口化编程思想。

尽管这一主题不涉及复杂的代码编写问题,然而Matlab脚本语言的特点和接口化编程思想对学生深入学习和使用Matlab至关重要。因此,可将前两主题的内容与M函数的教学形成延续性,引导学生将前两主题编写的代码进行接口化编程的开发,不引入新的复杂程序编写任务,使学生可以集中精力于脚本语言特点和接口化编程思想的实践和体会。

第四主题,函数功能的自主学习和代码优化(4学时)。介绍通过访问Matlab帮助中心、查阅技术文档等学习新函数使用方法的技巧,通过实例演示和上机操作熟练掌握新函数自主学习技巧;讲述矩阵化编程思想和混合编程思想,要求掌握矩阵化编程和混合编程的技巧。

这一主题是实践性很强的技巧教学,也是侧重能力培养的Matlab工具属性教学核心内容,需要在教学中充分调动学生的积极性。通过将学生已掌握的专业知识作为教学例题,有助于他们直观理解Matlab的工具作用,从而激发学习兴趣。笔者在对信息工程专业的学生进行教学时,将傅里叶变换函数作为核心例题,在讲解了函数的自主学习方法后,要求学生自行查阅资料,学习并使用Matlab内建的傅里叶变换函数。进一步课堂讲解代码优化技巧,将前三主题中已编写的代码进行优化,从而让学生掌握矩阵化编程和混合编程的技巧。

第五主题,Matlab高层绘图操作(4学时)。介绍通过内置GUI操作,绘制常见科学图表、编辑图表属性的方法,介绍利用不同图表形式表达科学数据的技巧,要求掌握绘制图形的保存、转存、导入文档的方法;讲述通过内建函数绘制图形并编辑图形属性的方法,介绍批量绘图代码的开发技巧,绘制动态图、混合绘图等高级图形代码编写技巧。

图形的绘制和导入文档是Matlab学以致用的核心内容,也是学生在完成课程设计、毕业设计等实践创新活动必备的重要技能,因此笔者在教学实践中采用了以练代讲的策略。在讲解过程中直接通过课堂演示讲述GUI操作绘图、保存、导入文档的方法,然后演示图形属性编辑和图形美化技巧,最后通过一定量的练习,给定数据,引导学生自行设计科学图表并导入文档,达到学以致用的目的。

第六主题;Matlab的专业应用实践(10学时)。该主题按照具体专业和学生已掌握的知识进行专业实践编排。笔者在对信息工程专业进行教学过程中,编排了傅里叶变换和小波变换提升实践。首先复习并扩展第四主题函数功能的自主学习的内容,引导学生通过查阅资料和访问Matlab帮助中心学习傅里叶变换和小波变换的内建函数,针对模拟信号进行仿真;进一步实践第五主题图形化的内容,将仿真结果编排成合理、美观的图表,并导入文档中形成科技报告;最后进行代码编写和优化能力的训练,引导学生按照信号处理课程的理论知识编写快速傅里叶变换的子函数,并进行优化。

3 结语

笔者在电子信息工程专业开设的“Matlab基础及应用”课程中实践了上述教学内容及安排,并在毕业设计的指导中对教学效果进行了调查。结果表明,由于重视了函数功能的自主学习能力培养,学生在课程学习后无需额外的培训即可开展本专业的Matlab仿真,并且具备了利用Matlab进行科学数据的图表绘制能力,达到了学完即可用的教学效果。在毕业设计中,绩点为优秀的学生具备了通过Matlab实现精准、美观的科技图表绘制和文档导入能力,能够编写高效率的Matlab代码,可自行掌握相关领域函数实现代码量的自主扩展,教学实践效果显著。

经过基于能力培养的Matlab教学实践,可以使学生充分掌握Matlab在研究与开发中的应用技巧,发挥自主学习能力,从而达到授之以渔的效果,实现了传授知识、技巧、实践经验三个方面的教学目标。

[1] 刘晓玉. 基于教学目标的 Matlab 语言课程教学方法探索[J]. 北京:计算机教育, 2015(3): 59-61.

[2] 于润伟, 朱晓慧. Matlab 基础及应用[M]. 北京:机械工业出版社, 2012:4.

[3] 张学敏, 倪虹霞. Matlab 基础及应用[M]. 北京:中国电力出版社, 2012:2.

[4] 刘勍, 温志贤. Matlab 基础及应用[M]. 南京:东南大学出版社, 2011:1.

[5] 李国朝. Matlab 基础及应用[M]. 北京:北京大学出版社, 2011:1.

Teaching Practice of Tool-attribution of Matlab for Ability Training

ZANG Mu-jun, ZOU Hai-lin

(SchoolofInformationandElectricalEngineering,LudongUniversity,Yantai264025,China)

Matlab has two attributions, which are the programming language and scientific tools. Traditional teaching pays attention to language-attribution and ignores the tool-attribution of Matlab and lacks ability training because it seems that Matlab only is abont programming language. In order to solve the above problem, we proposed and applied the plan of education reform of tool-attribution of Matlab for ability training. The plan highlights the position of tool-attribution of Matlab, attaches importance to teaching students the programming ability and graphics rendering ability, and therefore makes them master skills of design and research skills using Matlab.

Matlab; tool-attribution; programming ability

2016-08-31;

2017-01- 09

山东省本科高校教学改革研究项目(2015M064)

臧睦君(1984-),女,博士,讲师,主要从事图像处理、模式识别的教学和研究,E-mail:zmjun_candy@hotmail.com

G642

A

1008-0686(2017)04-0026-04

猜你喜欢
代码绘制编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
超萌小鹿课程表
创世代码
创世代码
创世代码
创世代码
放学后