您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 环境模拟计算的MATLAB程序设计
MATLAB基础及其在环境科学中的应用培训内容环境模拟计算的MATLAB程序设计;环境统计常见数据分析方法的MATLAB实现;环境基本模型的MATLAB实现及应用(1);环境基本模型的MATLAB实现及应用(2);非传统环境数学问题的MATLAB实现;讨论。环境模拟计算的MATLAB程序设计第一讲一、MATLAB基本数学运算如何操作MATLAB?如何在使用中快速获得帮助?其主要数值运算功能有哪些?一、MATLAB基本数学运算工作窗口系统:经常用到的窗口有6个:命令窗口、M文件编辑窗口、工作空间窗口、当前目录窗口、工具箱窗口、命令记录窗口命令窗口M文件编辑窗口工作空间窗口工具箱窗口当前目录窗口命令记录窗口一、MATLAB基本数学运算查询帮助系统:MATLAB的帮助命令有很多,可以分为help系列和lookfor命令两大类。①help系列包括help、help+函数名、helpwin和helpdesk。②lookfor命令“help+函数名”的方法对要求已经确切知道函数名,但是由于用户不熟悉的原因,一些函数名可能记忆得不是很清楚,这时候可以用lookfor命令,根据提供的关键字获得相关帮助,具体用法为:lookfor+关键字。需要时间较长。一、MATLAB基本数学运算演示帮助系统进入帮助系统主要有三种方法:其一就是通过在命令窗输入“demo”命令;其二是通过Help菜单的“Demos”子菜单;其三是在命令窗口输入“intro”命令一、MATLAB基本数学运算常用操作命令操作选项(File-优选项)-很有用的!!!命令说明命令说明命令说明quit关闭MATLABdir列出指定目录下的文件figure开辟新的图形窗口clear清除内存中的变量cd改变当前工作目录path显示或设置工作目录cla清除坐标系内的图形disp()显示括号内变量内容what目录中文件列表clf清除整个图形type显示指定文件内容save保存内存变量到文件clc清除命令窗口内容hold图形保持开关load加载指定文件的变量一、MATLAB基本数学运算变量与常量MATLAB变量命名规则:由字母开头,后面可以跟字母、数字、下划线等;变量名区分大小写;变量名不能超过31个字符;许多标点符号在MATLAB中有特殊意义,一般在变量中不允许使用。变量可以直接赋值,或者依靠计算获得值,然后可以直接调用。MATLAB为特定常数保留的变量名称特殊变量说明特殊变量说明特殊变量说明eps机器浮点运算误差限pi圆周率realmax最大正实数i,j纯虚数量i=sqrt(-1)lasterr最新一次错误信息nargout指定函数的输出变量数inf正无穷大lastwarn最新一次警告信息nargin指定函数的输入变量数NaN不定量,如0/0realmin最小正实数ans用于结果的缺省变量名一、MATLAB基本数学运算变量数据类型①数值型常用的数值量为双精度浮点数,占8个字节,MATAB表示为doube()。考虑到一些特殊应用,如图像处理,MATLAB还引入了无符号8位整型数据,表示为uint8(),可大大减少其存储空间。此外,MATLAB中还使用其它数据类型,如int8()、int16()、int32()、int32()。对于MATLAB中数据显示格式,可以用format命令控制,具体用法可以使用help命令查询。如果需要显示精度较高的数值,可以使用变精度算法函数vpa()来表示。调用格式:vpa(A)或vpa(A,n)%A表示数值型变量,n表示显示有效数字位数。②符号型用于公式推导和一些问题的解析解。符号型变量使用前需要用syms命令申明。语法格式为:symsvar_listvarform%var_list变量列表;varform变量类型。例如:symsxrealypositive%表示定义符号变量x为实型,y为正数。定义多个变量时,变量之间以空格分开,不能用逗号分开。变量类型属可选项,默认为实数变量。③字符串型MATLAB支持字符串变量,但是要用单引号而不是双引号括起来。一、MATLAB基本数学运算语句基本形式①直接赋值语句基本形式为:变量=赋值表达式分号“;”的用法②函数文件调用语句基本形式为:[返回变量列表]=函数名(输入变量列表)例如[u,v]=eig(A)返回矩阵A的特征向量u和特征值v。③命令文件调用语句调用格式:文件名。④冒号表达式语句格式:向量=初值:步长:终值限值v1=0:0.4:pi%注意观察最终值是2.8而不是πv2=0:pi%默认步长为1v3=0:-0.5:pi%步长为负值,显然不可能生成向量,因此得空矩阵v4=pi:-0.5:0%逆序构成向量,步长可以为负值一、MATLAB基本数学运算矩阵基本运算①子矩阵提取语句格式:B=A(S1,S2)%S1、S2分别表示行号、列号构成的向量。【例】已知矩阵A=[12345;67890;54321;09876],体会下列语句。A=[12345;67890;54321;09876]%定义矩阵A1=A(1:2:end,:)%提取矩阵A的1、3行,所有列。关键词end表示最后一行或列A2=A([3,2,1],[124])%提取矩阵A的3、2、1行,1、2、4列A3=A(1:2,3:5)%提取矩阵A的1、2行,3、4、5列A4=A(:,end:-1:1)%提取矩阵A所有行和列,并将矩阵左右翻转,最后一列排到最前②矩阵转置语句格式:B=A’%单引号“’”表示对矩阵进行转置操作。③矩阵翻转语句格式:B=fliplr(A)%左右翻转B=flipud(A)%上下翻转B=rot90(A)%逆时针旋转90度一、MATLAB基本数学运算矩阵基本运算④矩阵的四则运算可以直接用“+”、“-”、“*”、“/”、“\”表示矩阵之间的四则运算,但要注意矩阵之间运算时维数的相容性。⑤矩阵乘方语句格式:B=A^x%A必须是方阵,x可以是正数或分数⑥点运算可以直接用“.*”、“./”、“.^”分别表示矩阵之间的乘法、除法和乘方的点运算,点运算实际上是对两个参与运算的矩阵中的对应元素的直接运算。一、MATLAB基本数学运算关系运算和逻辑运算关系操作符、逻辑操作符和逻辑运算函数关系操作符说明关系操作符说明逻辑操作符说明逻辑函数说明小于=大于等于&与xor(x,y)异或运算大于==等于|或any(x)任何元素非零,返回1=小于等于~=不等于~非all(x)所有元素非零,返回1一、MATLAB基本数学运算符号运算:可用于推导数学公式、求解代数方程、积分求解、微分方程的解析解。符号表达式可以通过syms命令、sym函数定义例如:symsn;h=symsum(3/(2*n-1)^2,1,inf)%n从1到无穷大,对表达式3/(2*n-1)^2求和symsx;y1=2*x^2-3*x-5;y2=sin(x);fy1=finverse(y1);fy2=finverse(y1);%分别求y1、y2的逆函数symsx;dsolve('Dx=1+x^2','x(0)=2')%D表示微分,微分方程为x'=1+x2,初始值小x0=2一、MATLAB基本数学运算插值——根据由实验和测量得到的由某一函数y=f(x)(可能未知或非常复杂)在不同自变量取值x1、x2……xn处的因变量y1、y2……yn值,构造一相对简单函数g(x)作为y=f(x)近似表达式:y=f(x)≈g(x),使g(x0)=y0,g(x1)=y1……g(xn)=yn。g(x)称为插值函数,常采用多项式或分段函数的形式。①一维插值调用格式:Y=interp1(x,y,X,’method’)已知数据(x,y),用method方法插值,计算确定的插值点X对应得函数值Y。‘method’插值方法,可取‘linear’(线性插值)、‘cubic’(三次多项式插值)、‘nearst’(临近点插值)、‘spline’(三次样条法插值)。②二维插值调用格式:Z=interp2(x,y,z,X,Y,’method’)已知网格数据(x,y,z),用method方法插值,计算确定的插值点(X,Y)对应得函数值Z。XY一、MATLAB基本数学运算插值③griddata()插值函数——interp2()函数只能处理以网格形式给出的数据。如果已知数据点格式不是以网格形式给出,该函数则无能为力。实际中大部分实测数据不是以网格形式给出的,一般是以多组(xi,yi,zi)的形式给出,为此,MATLAB提供了griddata()函数处理一般的二维插值问题。——调用格式:Z=griddata(x,y,z,X,Y,’method’),式中,x,y,z表示已知的样本点坐标,不要求是网格形式的数据;X,Y表示相应的插值位置(X,Y),可以是数据点、向量或网格矩阵;’method’可取‘linear’、‘cubic’、‘nearest’、‘v4’,其中‘v4’是MATLAB4.0版本提供的算法,公认效果较好。一、MATLAB基本数学运算已知平面上的数据点可用网格生成函数表示[x,y]=meshgrid(-5:0.25:5,-5:0.25:5)z坐标可用函数z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)表示现插值求平面网格[X,Y]=meshgrid(-4:0.2:4,-4:0.2:4)上的点对应的Z坐标,并绘图。[x,y]=meshgrid(-5:0.25:5,-5:0.25:5);z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2);[X,Y]=meshgrid(-4:0.2:4,-4:0.2:4);Z=interp2(x,y,z,X,Y,‘cubic’);subplot211;surf(x,y,z);title('原始数据图形');xlabel('X');ylabel('Y');zlabel('Z');subplot212;surf(X,Y,Z);title('二维插值图形');xlabel('X');ylabel('Y');zlabel('Z');插值插值举例一、MATLAB基本数学运算插值例:已知观测数据对(x,y)如下,现求在自变量x0=[-1.8-1.3-0.70.71.21.7]处的y0值。用不同的插值方法,比较其结果。x=[-2.0-1.5-1.0-0.500.51.01.52.0]y=[0.20.310.50.81.00.80.50.310.2]【求解】上述问题的MATLAB程序如下。x=[-2.0,-1.5,-1.0,-0.5,0,0.5,1.0,1.5,2.0];%给出自变量观测值y=[0.2,0.31,0.5,0.8,1.0,0.8,0.5,0.31,0.2];%给出因变量观测值x0=[-1.8-1.3-0.70.71.21.7];%给出互异插值点%不同的插值方法y01=interp1(x,y,x0,'linear');y02=interp1(x,y,x0,'cubic');y03=interp1(x,y,x0,'nearst');y04=interp1(x,y,x0,'spline');%将插值结果绘图对比subplot211;%分割绘图窗为2*1=2个,将绘制图形置于第1个子窗口plot(x,y,'b-',x0,y01,'*');%原始观测点画线,插值点画“*”legend('原曲线','插值点');%标注图例title('linear');%标注标题xlabel('x轴');%标注x轴ylabel('y轴');%标注y轴subplot212;plot(x,y,'b-',x0,y02,'*');legend('原曲线','插值点');title('cubic');xlabel('x轴');ylabel('y轴');‘cubic’和‘spline’的插值结果会更接近理论值,而’lin
本文标题:环境模拟计算的MATLAB程序设计
链接地址:https://www.777doc.com/doc-2223680 .html