摘 要:本文介绍了Matlab软件的基本功能和特点,论述了Matlab在科学计算结果可视化、文件操作和图形用户界面编程等方面的主要功能和相关函数,以及它们在地球物理专业中的应用,认为Matlab是地球物理专业学生必须熟练掌握的工具软件。
关键词:Matlab;地球物理;课程教学
中图分类号:G64 文献标识码:A 文章编号:2095-9214(2020)18-0077-02 DOI:10.12240/j.issn.2095-9214.2020.18.037
Matlab软件是由美国的Clever Moler博士于20世纪
70年代开发的第四代计算机语言,设计者的初衷是解决线性代数课程的矩阵运算问题,但由于其可扩充性,Matlab已经不仅仅是一个“矩阵实验室”了。它集科学计算及计算结果可视化、图像处理、声音处理于
一身,并提供了丰富的Windows图形界面设计方法,已经广泛应用于工程学科的研究领域。Matlab在美国已经成为工科大学生必学的四种计算机编程语言之一。20世纪90年代以来,Matlab语言已在我国逐渐推广使用,现在已应用于各学科研究和许多高等院校。
地球物理专业是地质类院校的主干专业,相对地质学等专业而言,对学生的计算机应用能力、程序设计能力要求很高。Matlab软件丰富的函数库、文件操作功能以及高级低级兼备的科学计算结果可视化功能能够很好地满足专业需求。特别是灵活多变、高级与低级兼备的计算结果可视化功
能方便绘制各类图件,有利于加深学生对专业知识的理解。
一、Matlab简介
Matlab是直译式语言,简单易懂且语法限制不严格,对于有一定编程基础的学生而言,非常容易掌握。变量命名规则也和其他程序设计语言类似,运算符同样包括算术运算符、关系运算符、逻辑运算符及特殊运算符等几大类。就结构化程序设计而言,包含if-else、if-end分支和switch-case-end分支,for-end当型循环和while-end直到型循环。总体上而言,Matlab语法规则较为简单,具体规则和C、Fortran等语言基本一致。
不同之处在于,Matlab所定义的运算都是矩阵之间的运算,需要满足矩阵运算规则。另外,Matlab语言
所编写的代码,即M文件(后缀为“.m”),并不需要编译生成可执行文件,直接就可以在Matlab环境下运行或调用,即分别为脚本M文件和函数M文件。Matlab本身的函数库便是由一系列函数M文件组成(核心函数为dll动态链接库),某一领域的一些函数M文件便构成了Matlab在该领域的工具包。正是
基于这种扩充性,Matlab在各个科学领域都可以有很好的
发展与延伸,比如,可以编写地球物理领域的数据处理或反
matlab等高线填充颜演解释工具包。
二、计算结果可视化
地球物理专业所需绘制的图件主要为一维曲线图及部分特殊图件、二维平面等值线图或块图以及三维数据绘制切片图。另外,有时需要绘制三维表面图件。对于这些图件,Matlab都有一些对应函数实现。
一维曲线图绘制函数plot是Matlab绘图函数的基础,几乎所有其他Matlab绘图函数都是在plot的基础上扩充的。比如,要绘制一条正弦函数曲线,在M-editor下输入“x=0:0.1:2*pi;y=sin(x);plot(x,y,’bs’);”,然后保存为一个M文件即可运行生成正弦曲线,x变量的步长为0.1,在数据点上绘制颜为“b”即蓝、线性为“s”即方块的曲线,可以方便地改变步长和线条颜和线型。Matlab会根据x、y坐标的值域自动生成坐标轴,此外还可用xlabel、ylabel、title、legend函数在图件上放置x轴和y轴,标注图名以及图例。semil
ogx、semilogy及loglog函数是plot 函数的扩展,可分别实现x轴、y轴单对数坐标成图及双对数坐标作图。最后,Matlab还可以绘制统计直方图(bar)、阶梯图(stairs)、向量场图(quiver)、火柴棒图(stem)、玫瑰图(rose)以及误差棒图(errorbar)等特殊图件。地球物理专业能用该类绘图功能绘制的图件主要有测深曲线、地震波速、走向角度统计图等图件。
二维图件绘制函数主要为contour和pcolor,前者可以绘制等值线图,比如等高线、视电阻率或视极化率等值线、波速等值线、重磁异常等值线等,后者可以绘制块图,比如反演得到的电阻率模型或波速、密度模型,以某一颜代表某一数值,对断面进行填充。同样,Matlab函数可以轻易实现图件的修饰和标注。
此外,对于地球物理领域的三维数据体,比如电法勘探三维反演结果,可以采用三维切片图绘制函数slice来绘制
对象或面对象等分别赋给句柄变量,采用set函数来任意设
置这些句柄以达到定制图件的目的。
三、文件操作
地球物理仪器设备自动化程度非常高,绝大多数仪器都可以自动记录数据文件,但不同的仪器设备记录格式通常各不相同,因此经常需要编写代码读写文件。由于Matlab提供了大量的文件操作函数,且所有变量都以双精度矩阵保存,在文件操作上相对其他软件具有较大优势。
Matlab文件打开函数为fopen,如“fid=fopen(‘test. dat’,‘r’)”,其中“test.dat”为文件名,“r”指定文件打开方式为读取,也可指定打开为“w”或“a”,分别表示写入与在文件结尾附加内容,“fid”为文件号,用于以后对文件的操作;文件关闭函数为fclose,如“fclose(fid)”。对ASCII文件内容的读取、写入函数分别为fscanf和fprintf,对二进制文件内容的读写函数分别为fread和fwrite。一般程序设计语言对文件的读写都要以循环的方式逐行进行,但Matlab可以矩阵的方式读入数据体,对规则数据体文件可以一次性读写。最后,Matlab有很多文件读写的辅助函数,例如行读入函数(fgetl)、判断文件结尾函数(feof)等,这些函数结合一些字符串处理函数如字符串替换(strrep)、字符串转为数值(str2num)、字符串查(findstr)等,能够很好地读写一些字符串较多的固定格式文件或根据特殊字符读写文件的某一部分。
如上所述,Matlab软件的文件读写函数众多,提供了大量二进制文件、明码格式文件的读写手段,且其对字符的操作和对数据的运算功能明显优于常规的编程语言或软件,可以方便地应用在地球物理专业固定格式文件的读写中,结合丰富的绘图函数,输入或输出的结果可以迅速实现各种形式的可视化,例如野外采集数据的实时回放、科学计算结果的可视化和输出等。
四、图形用户界面设计
地球物理专业作为一个传统但科技含量很高的地学专业,分支方法众多,需要大量专业知识,且在资料处理、反演解释过程中需要大量输入参数,若设计一些图形用户界面可以方便非专业用户操作和使用。
图形用户界面的设计原则是要兼顾简单性(Simplicity)、一致性(Consistency)和习惯性(Familiarity),对一些专业软件还要考虑其他因素。(uicontrol),其中控件主要有单选框、多选框、按钮、静态文本、输入框、列表框和滚动条等10余种。最后,Matlab 还有不少对话框函数可供调用,如询问对话框(questdlg)、错误对话框(errordlg)、警告对话框(warndlg)和输入对话框(inputdlg)等,可以为参数选择或输入提供很多提示和便捷。
地球物理专业有一些较为复杂的数据处理、反演软件,这些软件都需要专业的输入文件,如数据文件、模型文件、参数文件等,输出文件也为固定格式文件。因此,用Matlab的图形用户界面控件编写一些界面,供用户可视化生成输入文件、输出文件成图,有利于学生在学习过程中的理解和掌握,提高学习效
率。
对地球物理专业学生的Matlab教学具有重要现实意义。学生在专业课学习期间需要进行大量的课堂实习、专业实习,Matlab能够很好地实现文件操作、科学计算以及计算结果的可视化等工作,能够让学生把主要精力投入专业课的学习与实践中,并加深对所学专业方法和相关物理意义的理解。
此外,大多数学生在毕业设计期间都用到了Matlab的可视化功能,部分学生甚至直接以Matlab开发一些应用作为毕业论文的主要内容。可以毫不夸张地说,Matlab是地球物理专业学生在本科学习阶段最重要的计算机课程,是完成专业知识学习必备的工具软件,地球物理专业应该加大对该课程的投入与扶持。
参考文献:
[1]王希连.Matlab软件在《数字信号处理》课程教学中的应
用研究[J].大学数学,2005,21(01):14-16.
[2]梁振光.MATLAB在“电磁场”教学中的应用[J].电气电
子教学学报,2004,26(03):105-106+109.
[3]李奇峰.利用MATLAB探究中学物理极值问题[J].柳州
师专学报,2008,23(01):138-140.
[4]亨塞尔曼.精通Matlab7[M]. 朱仁峰,译.北京:清华大学
出版社,2006.
[5]张博夫,梁凯琦.MATLAB环境下的数字图像处理实验
入门[J].实验科学与技术,2008(01):52-53+116.
作者简介:叶高峰(1977—),男,汉族,浙江绍兴人,副教授,博士,主要从事地电学、电法勘探的教学与研究工作。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论