勘查技术与工程《MATLAB语言及应用》教学方法探索

2019-07-26 10:32柴新涛汪玲玲彭荣华
教育教学论坛 2019年23期

柴新涛 汪玲玲 彭荣华

摘要:MATLAB是一款广泛应用于科学计算、数据分析及可视化的交互式编程软件,《MATLAB语言及应用》是勘查技术与工程专业勘查地球物理方向一门重要的课程,MATLAB内容多、课时有限,如何在有限的时间内让学生尽可能全面地掌握MATLAB并灵活应用于解决专业课程问题值得深入研究。笔者根据近年来在中国地质大学(武汉)任教MATLAB课程经历,探索出一套适用于勘查技术与工程(勘查地球物理方向)的MATLAB教学方案,并探讨了MATLAB授课与即时网络通讯软件相结合的优点。

关键词:勘查技术与工程;勘查地球物理;MATLAB

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)23-0158-03

一、引言

MATLAB是MATrix和LABoratory前三个字母的组合,寓意为矩阵实验室[1]。MATLAB是由MathWorks公司开发的面向科學计算、算法研发、数据分析可视化的交互式程序设计软件,代表了当今国际科学计算软件的先进水平[2],其官网为:https://www.mathworks.com/。MATLAB以友善的使用环境、强大的符号处理、精确的数值计算、灵活的图形显示、高效的编程功能为越来越多的教师、学生和科研人员所喜爱。目前,MATLAB已成为国内外理工科大学生学习知识和进行科学研究的主要编程语言之一,众多高等院校都为理工科学生开设了《MATLAB语言及应用》课程[3]。MATLAB语言内容多,特别是函数命令及其使用方式变化多样,且应用面广泛,参考学习资料众多,但课程学时有限。如何在有限的时间内让学生尽可能全面地掌握MATLAB并灵活应用于解决专业课程问题值得深入研究。笔者结合近年来在中国地质大学(武汉)任教《MATLAB语言及应用》课程的经历以及自身的工作、研究经历,进行了总结与实践,探索出一套较为适用于勘查技术与工程专业(勘查地球物理方向)的MATLAB语言教学方案。

二、课程教学背景

勘查地球物理是一门应用物理的原理解决矿产油气资源勘查问题的理论和方法的学科。勘查技术与工程专业(勘查地球物理方向)着重培养学生掌握重力、磁法、电法、地震等地球物理勘查的科学知识和方法技术。在公共基础课和专业课学习过程中,平时作业、课程报告、毕业论文等多方面要用到MATLAB。中国地质大学(武汉)勘查技术与工程专业(勘查地球物理方向)《MATLAB语言及应用》课程共32学时,包括20学时理论课,12学时上机课。

三、教学方案设计

由于MATLAB语言内容多,32学时不可能全面涉及,在教学方案设计过程中,笔者考虑到学生的专业及培养目标,结合笔者在工作、学习和科研过程中对MATLAB的使用经历以及学生的兴趣点,将课程主要内容概括整理为以下几个章节。

第一章,引入MATLAB。在本章首先向学生介绍什么是MATLAB,MATLAB相比于其他编程语言(比如C++)的优点。接着,向学生展示MATLAB在本专业的应用,比如演示地震勘探数据处理过程中的程序(像多次波压制、噪声压制、数据插值等),列举MATLAB在重力、磁法、电法勘探应用例子,让学生了解MATLAB在本专业有着广泛的应用。进而,向学生介绍国外公开的与本专业相关的MATLAB代码包,比如阿尔伯塔大学Sacchi教授团队所研发的SeismicLab,让学生对MATLAB在本专业中的应用有整体认识。此外,向学生介绍MATLAB在当前热门研究领域中的应用,比如人工智能、机器学习、深度学习,让学生认识到学MATLAB有用,进而“学以致用,以用促学”。

第二章,MATLAB编程基础,包括MATLAB的函数、参数、变量等的命名规则,MATLAB的帮助函数help、doc,部分通用命令,语言标点,数据类型,矩阵数组操作及分析函数,符号运算。着重向学生介绍在专业学习过程中用到的内容,注重及时演示,比如演示清除命令clear、清屏命令clc。

第三章,MATLAB编程核心,包括介绍.m文件编辑环境,文件操作指令(addpath、genpath加载路径等),默认的特殊变量及关键字,控制流(if-else分支结构、switch-case分支结构、for和while循环等),脚本和函数,程序调试和优化,数据读写(load、save、fread、fwrite、读写txt、segy文件)。

第四章,MATLAB数据可视化,包括画图时输入参数的介绍,二维和三维画图,考虑到学生会经常涉及到图片保存用于写作业、课程报告等,笔者介绍了便捷的高分辨率图片保存命令。数据可视化是MATLAB较为重要的一个应用,笔者注重于结合学生的专业课内容,比如结合地震勘探的数据来介绍常用的画图命令plot、subplot、imagesc、colormap、slice等。此外,结合地震勘探波场的传播过程,向学生介绍如何利用MATLAB制作动图。

第五章,MATLAB的应用。着重于介绍MATLAB在地球物理勘查过程中的应用。由于时间有限,笔者仅向学生展示了部分容易理解的例子,比如MATLAB用于地震数据的插值、河流流量及河底工程布线长度测算、国土面积及国界线长度测算、山地土方及储层厚度测算等。由于地球物理勘查过程中通常涉及计算量较大的数据处理,笔者向学生详细介绍了如何利用MATLAB做并行计算。笔者基于地震数据噪声压制程序向学生详细介绍了怎么做好MATLAB的程序设计、综合利用前几章所学知识写出一套系统的MATLAB程序。

笔者根据自身讲课经历,20个理论课学时仅能介绍到前五章。笔者将MATLAB的图形用户界面(即如何利用MATLAB编写图形用户界面软件)、MATLAB编译器(即如何编译发布MATLAB编写的图形用户界面软件)、MATLAB的外部接口mex文件(即如何在MATLAB环境下调用C、C++程序)等章节内容作为课后拓展学习。MATLAB编程语言课涉及代码较多,仅用多媒体和板书会有些枯燥,笔者采用板书、多媒体加现场演示程序的授课方式,以提高学生的注意力。在每章节及时布置作业,以便学生上机练习,课后作业内容与专业课紧密相关,着重让学生在解决本专业相关问题的过程中掌握MATLAB。为了将理论课和上机课较好地结合,笔者认为要在理论课后及时给学生安排上机,避免上机课和理论课间隔较长。共12学时的上机课,可以尽量给学生安排6次上机、每次2学时,而不是安排3次上机、每次4学时。如若条件允许,在机房开展理论课,这样教师每讲完一部分内容,学生可及时练习验证。关于课程考核评成绩,日常考勤和平时作业占一定比例,同时将课程报告和闭卷考试相结合,有些不宜闭卷考试的内容放到课程报告里,比如编写复杂的Matlab程序、读写数据、画图、结果查验等;有些内容可以采用闭卷考试,比如一些必须掌握的函数命令、语法格式、矩阵数组操作、if-else分支结构、for循环、while循环等。在平时作业和课程报告布置的过程中,要做到每位学生难度相同但内容有差异,比如布置的课后作业、课程报告与学生的序号有关。

四、国外专业相关MATLAB公开资源介绍

古人云“授之以鱼不如授之以渔”。介绍完课堂基本内容,可以给学生介绍一些较好的相关学习资源,进行深入拓展学习。这里列举了一部分勘查技术与工程专业(勘查地球物理方向)相关的MATLAB公开资源。

1.阿尔伯塔大学Sacchi教授团队所公开的SeismicLab软件MATLAB代码包,其官网为http://seismic-lab.physics.ualberta.ca/index.html。SeismicLab包含了频率域带通滤波、子波估计、频率空间域噪声压制、频率空间域地震数据插值、Radon变换压制多次波、速度分析等地震勘探數据处理过程中涉及的方法技术。

2.卡尔加里大学地球科学系CREWES学术研究组所公开的CREWES包,其官方网址为https://www.crewes.org/ResearchLinks/FreeSoftware/。CREWES包含了许多可视化工具、有限差分地震正演模拟、Gabor反褶积、快速广义傅里叶变换地震数据插值、反演、地震偏移工具箱、叠前各向异性逆时偏移、射线追踪、反射率法正演模拟、segy数据读写、地震数据处理工具箱、VSP数据处理工具箱、井震匹配等较为齐全的地震数据处理解释程序。同时,在该网址可下载Margrave教授所撰写的书籍《Numerical Methods of Exploration Seismology with algorithms in MATLAB》,介绍了勘探地震学方法的Matlab编程实现,学生在学习Matlab编程的同时学习了专业英语。

3.IP4DI是科罗拉多矿业学院地球物理系A.Revil教授领导的研究团队所开发的时移电阻率数据处理与反演MATLAB软件包(https://github.com/mariosgeo/ipi4d)。IP4DI软件采用标准最优化算法及主动时间约束算法,能够用于二维、三维及四维直流电阻率法、时域激发极化和频率域发极化法的正反演研究,并适用于地面、井地及井间等观测类型。

4.Computers & Geosciences期刊,该期刊的一个特点是:在该期刊发表的论文,多会在该期刊的官网公开论文对应的程序。该期刊官网为:https://www.journals.elsevier.com/computers-and-geosciences/。该期刊是勘查地球物理领域较高级别期刊之一,会有最新的、较为前沿的方法技术在此发表。这样学生在学习Matlab编程的同时,也掌握了本专业较为前沿的新方法新技术,加深了对专业的认知。

5.SegyMAT,一个较为系统全面的segy格式地震数据读写源代码包,其官网为.http://segymat.sourceforge.net/。值得注意的是,我们在向学生介绍公开的学习资源时,我们应该警醒学生在学习利用他人程序的同时,要注重对他人知识产权成果的尊重与致谢。

五、MATLAB课程与即时网络通讯软件

随着有线网络、无线网络、手机网络以及智能手机的推广普及,以腾讯QQ、微信为代表的即时网络通讯软件具有满足大学生移动式学习、互动式参与等重要功能,将Matlab课程与即时网络通讯软件相结合,笔者认为有以下几个优点:①通过即时网络通讯软件,教师和学生可以实时交流讨论、答疑解惑,不受时间空间的限制,解决了“学生找不到老师”、“老师找不到学生”的问题。②《MATLAB语言及应用》课程涉及很多代码程序、数据处理及可视化,通过即时网络通讯软件,教师可以将课件、电子教学资源、代码和数据及时共享给学生。③通过即时网络通讯软件的群功能,一位学生存有困惑,教师解答时会被所有学生看到,提高了答疑效率。即时网络通讯软件的语音留言功能方便了教师和学生之间的交流。

六、结语

《MATLAB语言及应用》是勘查技术与工程专业勘查地球物理方向一门重要的课程,笔者针对培养目标、教学要求,将MATLAB课程、学生专业、笔者自身科研经历相结合,践行“学以致用,以用促学”的教学模式,探索出一套适用于勘查技术与工程专业(勘查地球物理方向)的《MATLAB语言及应用》教学方案,介绍了一些与学生专业密切相关的国际化MATLAB学习资源,探讨了将Matlab课程与即时网络通讯软件相结合的优点,有益于提升《MATLAB语言及应用》教学质量。

参考文献:

[1]马昕.“MATLAB语言及其工程应用”课程的双语教学[J].实验室研究与探索,2005,(s1):205-206.

[2]汪勇.浅谈Matlab在地震勘探教学中的应用[J].中国地质教育,2012,21(4):108-110.

[3]徐国保.《Matlab语言及应用》课程教学改革探索与实践[J].中国教育信息化·基础教育,2016,(12):13-15.