您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 数学建模竞赛中常用软件的操作
数学建模竞赛中常用软件的操作本节主要介绍数学建模竞赛中常用软件MATLAB和Lingo的一些基本操作。一、Desktop简介在桌面双击MATLABb图标,或双击安装目录C:\ProgramFiles\MATLAB\R2012a\bin下的MATLAB文件。启动后默认界面如下图。图1Desktop操作桌面的外貌1.CommandWindow该窗口是进行MATLAB各种操作的主要窗口。在该窗内可以输入各类指令、函数、表达式;显示除了图形外所有的运算结果,错误时,给出相关出错提示。指令输入完后只有按回车键【Enter】才能执行;如果输入的指令不含赋值号,计算结果被赋于默认的变量ans。变量名和函数名对大小写敏感,变量第一个字符必须是英文字母,最多包含63个字符(英文、数字和下划线),不能包括空格、标点、运算符;不能使MATLAB的关键词和自用的变量名(eps,pi等)函数名(sin,exp等)、文件夹名(rwt,toolbox等)。在Matlab中有一些固定变量,例如(1)ans:在没有定义变量名时,系统默认变量名为ans;(2)eps:容许误差,非常小的数;(3)pi:即圆周率;(4)i,j:虚数单位;(5)inf:表示正无穷大,由1/0运算产生;(6)NaN(NotANumber):表示不定值,由inf/inf或0/0运算产生;(7)nargin:函数的输入变量数目;(8)nargout:函数的输出变量数目。在MATLAB中,控制流关键字if,for,end等用蓝色字体表示;输入指令中的非控制指令、数字显示为黑色字体;字符串显示为紫色字体;注释为绿色字体;警告信息为红色字体。2工作空间浏览器工作空间(Workspace)窗口用于浏览MATLAB中的变量。在工作空间窗口内,用户可以方便地查看、编辑存储的数据变量。表1工作空间浏览器主要功能及其操作方法功能操作方法新变量创建单击该图标,在工作空间产生unnamed新变量;双击该变量,引出VariableEditor变量编辑器;可输入数据;可重新命名变量内容显示选中变量,点击该图标,则变量内容显示在VariableEditor变量编辑器中向内存装载文件数据选择MAT数据文件,单击该图标,引出ImportWizard界面,选择需要装载的数据把变量保存进文件选择一个或多个内存变量,单击该图标或单击右键,选择Saveas,把这些变量保存到MAT数据文件图形绘制启动键绘制选定类型的图形绘图类型菜单引出键点击引出绘图类型菜单以供选择工作空间常用的管理指令有:(1)who及whos:查询指令(2)clear:清除工作空间中的所有变量clearvar1var2:清除工作空间中的变量var1和var2(3)saveFileName:把全部内存变量保存为Filename.mat文件saveFileNamev1v2:把变量v1和v2保存为Filename.mat文件saveFileNamev1v2–append:把变量v1和v2添加到Filename.mat文件(4)loadFileName:把Filename.mat文件中全部变量调入内存loadFileNamev1v2:把Filename.mat文件中v1,v2调入内存3.CurrentFolder用户保存文件时,如果不专门指定目录名,则所存文件将保存在当前文件夹下。注意尽量不要把MATLAB所在的根目录或其任何子目录作为当前目录,以免破坏MATLAB原有文件的完整性。4.向量与矩阵的产生MATLAB的操作对象为矩阵。标量被看作是1×1的矩阵,n维行向量或列向量可看作是1n或1n维矩阵。行向量生成基本格式:start:step:end(step缺省时为1)例如:在命令窗口中提示符后输入,x=1:5,按回车【Enter】后,显示输出结果如下:x=12345Matlab的每条命令后,若为逗号“,”或无标点符号,则显示命令的结果;若命令后为分号“;”,则禁止显示结果,用“%”来实现注释功能。利用下面两个函数也可以产生向量。linspace:线性等分向量,例如,a=linspace(0,2*pi,100)。logspace:对数等分向量,例如,a=logspace(0,2*pi,100)。100为插入点数(99等分),默认值为100。在矩阵的输入中,约定:(1)元素之间用空格或逗号隔开;(2)用中括号方[]把所有元素括起来;(3)用分号(;)说明行结束。在命令窗口,输入矩阵时,按Shift+Enter键表示开始输入新的一行,且要求所有的行具有相同的列。例如:a=[123;4,56;78,9]该矩阵一直保存在工作空间,直至被修改。二、M文件与编程1.M文件M文件有两种类型:脚本类M文件和函数类脚本文件。脚本类M文件是一串按照用户意图排列而成的Matlab指令集合。脚本文件运行后,产生的所有变量都驻留在Matlab的基本工作空间(baseworkspace)中。只有用clear清除或关闭指令窗清除,否则一直保留。基本工作空间随Matlab的启动而产生,只有当Matlab关闭时,基本空间才被删除。函数类M文件的第一行总是以function引导的函数申明行,还包括函数与外界交换数据的全部标称输入\输出量(可有可无)。Matlab允许使用比标称数目少的输入\输出量,实现对函数的调用。运行函数文件时,Matlab开辟一个临时工作空间,称之为函数工作空间(functionworkspace),所有中间变量都存放在工作空间中,该函数文件运行结束后,该函数临时工作空间及其中间变量立即删除。在函数文件中,对某脚本文件的调用而产生的所有变量也存放于函数工作空间,而不存放在基本工作空间。函数工作空间随M函数文件的被调用而产生,调用结束后删除,可产生任意多个,相对于基本工作空间而言是独立的、临时的。2.编程MATLAB程序的编写主要有以下几种控制结构。(1)if-else-end条件控制表2if-else-end分支结构的使用方法单分支双分支多分支ifexpr(commands)Endifexpr(commands1)else(commands2)endifexpr1(commands1)elseifexpr2(commands2)......else(commandsk)end当expr为逻辑1时,指令组(commands)被执行。当expr为逻辑1时,指令组1执行;否则,指令组2执行。expr1,expr2,…中,首先给出逻辑1的分支被执行;否则,分支k被执行。常被switch-case替代。expr为控制分支的条件表达式,通常为关系、逻辑表达式,其运算结果为“标量逻辑值1或0”。也可以为一般代数表达式,则任何非0值均等同于“逻辑1”。expr也可以进行数组间的关系、逻辑运算,其运算结果为逻辑数组,只有该数组不包含任何0元素时,expr控制的分支才被执行。expr可为空数组,Matlab认为条件为“假”,分支不被执行。(2)switch-case控制结构表3switch-case控制结构的使用方法指令格式含义switchexprcasevalue_1(commands1)casevalue_2(command2)...casevalue_k(commandsk)otherwise(commands)endexpr为根据此前给定的变量进行计算的表达式;value_1是给定的数值、字符串标量(或胞元数组)若expr结果与value_1(或其中的胞元元素)相等,则执行commands1该项是以上各项的“并”的“补”;即以上所有的case均不发生,则执行改组指令。【说明】switch后的表达式expr的值只能是标量数值或标量字符串。对于标量数值,比较:表达式==检测值i;对于字符串,利用strcmp(表达式,检测值i)比较。case后的检测值不仅可以是一个标量数值或字符串,还可以是一个胞元数组。此时将expr和胞元数组中每一个元素比较,如与某一胞元数组元素相等,认为比较结果为真,从而执行与该检测值相应的一组命令。(3)for循环和while循环表4循环结构的使用for循环while循环forix=array(commands)endwhileexpression(commands)endix为循环变量,commands为循环体ix依次取array中元素,每取一个元素,执行循环体依次,直到ix大于array的最后一个元素跳出循环for循环的循环次数确定检测expression的值,若为逻辑真(非0)则执行循环体,否则结束循环。while循环的循环次数不确定三、读写Excel文件现在竞赛的附件大多是以Excel电子表格的形式给出,所以读写Excel电子表格文件的方法就显得十分重要。MATLAB提供了读取excel文件(后缀为.xls)的函数xlsread,其调用格式有:num=xlsread('filename'):从工作文件夹中,从A1单元格开始读取filename文件,把数据返回给num。num=xlsread('filename',sheet):选择所在的sheet,比如说'sheet1'。num=xlsread('filename',range):所在的单元格范围,比如说range='A1:A8'。num=xlsread('filename',sheet,range):sheet和单元格范围同时限制。[num,txt]=xlsread('filename',...):把返回的数据与文本分开保存。[num,txt,raw]=xlsread('filename',...):分开保存的同时,有把num和txt保存到raw里,形成一个单一变量。输出结果num中存储的是数据,txt存储的是文本,raw为所有的数据和文件。例如2011年全国大学生数学建模竞赛的A题《城市表层土壤重金属污染分析》中的附件,可以按如下的方法读取附件数据。读取cumcm2011A附件_数据.xls中附件1中有关取样点位置及其所属功能区数据:A=xlsread('cumcm2011A附件_数据.xls','附件1','B4:E322')读取附件2中8种主要重金属元素的浓度数据:formatshortgB=xlsread('cumcm2011A附件_数据.xls','附件2','B4:I322')读取附件3中8种主要重金属元素的背景值(平均值,标准偏差和范围):C=xlsread('cumcm2011A附件_数据.xls','附件3','B4:C11')MATLAB提供了读取excel写入的函数xlswrite,其调用格式有:[status,message]=xlswrite('filename',array,sheet,range)其中array为要保存的数据矩阵,sheet为工作表,range制定存储的区域,例如'C1:C2'。status为返回完成状态值,如果写入成功,则status为1;反之写入失败,则status为0。message包括了错误、警告信息和标识信息。例如:将数据写入testdata.xls文件的Sheet1。xlswrite('testdata.xls',[12.7,5.02,-98,63.9,0,-.2,56])将文本和数值混合数据从E1单元格开始写入testdata.xls文件的Sheet2:d={'Time','Temperature';12,98;13,99;14,97};xlswrite('testdata.xls',d,2,'E1')在testdata.xls中新建表格Temperature:[status,msginfo]=xlswrite('testdata.xls',d,'Temperatures','E1')在程序中,经常要对数据进行排序,常有以下函数。(1)sort函数sort(A):若A是列(或行)向量,默认对A进行升序排列,而sort(A,'descend')是降序排序。若A是矩阵,默认对A的各列进行升序排列。sort(A,dim):d
本文标题:数学建模竞赛中常用软件的操作
链接地址:https://www.777doc.com/doc-2426956 .html