您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > MatLab_基础篇
MatLab编程基础MatLab编程基础MatLab编程基础MatLab编程基础Mathematica或Maple的使用MatLab编程基础参考文献理论力学计算机模拟,清华大学出版社,彭芳麟等MatLab工程数学应用,许波,刘征编著Mathematica4.0使用教程,刘元高,刘耀儒Maple计算机代数系统应用及程序设计,李世奇,杜慧琴MatLab编程基础第一章MatLab简介第一节预备知识第二节矩阵与表达式第三节编程第四节作图与动画第五节常用的计算指令第六节工具箱MatLab编程基础第一节预备知识MatLab是矩阵工作室(MatrixLaboratory)的缩写MatLab的特点极强的数值计算功能和作图功能图形窗口式的操作界面用简单的指令可以完成大量的计算和作图有大量的不同领域的专用工具箱,用户也可以开发自己的专用工具箱MatLab编程基础第一节预备知识操作界面Desktop;指令窗口指令记录当前工作目录当前内存空间浏览器矩阵双精度大小写使用方法MatLab编程基础第一节预备知识例[1+22*34/5]ans=3.00006.00000.80002/3ans=0.6667formatlong2/3ans=0.66666666666667MatLab编程基础第一节预备知识在线帮助在指令窗口中直接使用:help+指令名称MatLab编程基础第一节预备知识使用菜单中的helpFullProductFamilyHelpMATLABHelpF1……MatLab编程基础第二节矩阵与表达式数据格式算符表达式变量函数矩阵其它数据结构MatLab编程基础第二节矩阵与表达式数据格式使用常规的十进制表达法,小数位数不限,可以用加号和减号表示正负数10的幂次表示为e或E加上正负数表示默认的虚数单位为i和j,数字后面直接写i或j表示虚数,也可以*i或jMatLab编程基础第二节矩阵与表达式算符加减乘除幂括号+-*/^()算术运算算符关系运算算符逻辑运算算符与或非&|~小于小于等于等于大于大于等于不等于====~=MatLab编程基础第二节矩阵与表达式表达式用算符把数、变量和函数组合在一起,就建立了一个表达式。可以对整个矩阵进行运算。表达式中运算常规的优先级自左至右执行,优先级的顺序为指数运算最优先,其次是乘除,最后是加减,可以用括号改变运算顺序。MatLab编程基础第二节矩阵与表达式变量变量名用字母打头,后面可以跟字母、数字、下划线,数目不限。但是只有变量名的前面31个符号有效。变量名可以用来表示具体的数据(如矩阵),这称之为对一个变量赋值。默认为双精度的复数。清除所有变量用指令clearallMatLab编程基础第二节矩阵与表达式常用的常量pi3.14159265358979i,j复数单位Inf无穷大eps2^(-52)2.2204e-016Nan非数realmin最小浮点数2^(-1022)2.2251e-308realmax最大浮点数2^(1024)1.7977e+308MatLab编程基础第二节矩阵与表达式函数基本函数列表helpelfun特殊函数列表helpspecfun使用菜单中的helpMatLab编程基础第二节矩阵与表达式矩阵定义矩阵:A=[2236;21256;236811]A=223621256236811x=0:pi/5:pix=00.62831.25661.88502.51333.1416MatLab编程基础第二节矩阵与表达式常用的生成矩阵指令:zeros零矩阵ones全部元素为1的矩阵eye单位矩阵rand均匀分布的随机数矩阵MatLab编程基础第二节矩阵与表达式例:exp与expm的区别借助于helpexp来查询MatLab编程基础第二节矩阵与表达式矩阵的识别与修改:矩阵操作的指令和算符:共轭转置加减乘右除左除幂矩阵运算算符A’+-*/\^数组运算算符A’+-.*./.\.^标量作用指令;矢量作用指令;矩阵作用指令行标与列标;合并;删去行与列MatLab编程基础第二节矩阵与表达式其它数据结构借助于helpdatatypes来查询列阵:行、列、层、块、堆、……三维列阵、四维列阵、五维列阵、……cat(dim,A1,A2,A3,…)repmat(A,[m,n,p,…])MatLab编程基础数据网格第二节矩阵与表达式[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)[X,Y,Z]=meshgrid(x,y,z)生成二维或三维数据生成n维数据[X1,X2,X3,…]=ndgrid(x1,x2,x3,…)[X1,X2,X3,…]=ndgrid(x)MatLab编程基础第二节矩阵与表达式x=[01234];[X,Y]=meshgrid(x)二维数据网格示例X=0123401234012340123401234Y=0000011111222223333344444MatLab编程基础第二节矩阵与表达式x=[01234];[X,Y,Z]=meshgrid(x)[X,Y,Z]=ndgrid(x)三维数据网格示例MatLab编程基础第二节矩阵与表达式基元列阵可以将不同类型的数据按照与矩阵形式相似的结构组织起来加以应用结构数据比基元列阵更复杂的数据结构,不仅可以将不同类型的数据组织在一起,还可以为它们赋予名称,是一种有域名的数据S=struct(‘field1’,values1,‘field2’,values2,…)MatLab编程基础第三节编程程序文件的编辑与调试函数类文件流程控制数据输入与输出MatLab编程基础第三节编程-程序文件的编辑与调试程序文件的编辑与调试程序编辑器编辑M文件程序运行及调试设置路径MatLab编程基础程序编辑器第三节编程-程序文件的编辑与调试%路径及文件名文件名程序注释MatLab编程基础第三节编程-程序文件的编辑与调试%clearallA=[12123358911279159118];inv(A)det(A)路径及文件名程序编辑器窗口程序注释编辑M文件文件名MatLab编程基础第三节编程-程序文件的编辑与调试程序运行及调试%clearallA=[12123358911279159118];inv(A)det(A)路径及文件名文件名程序编辑器窗口运行文件名回车ans=-0.0106-0.09460.06140.0412-0.06470.0942-0.17160.11130.1095-0.03910.0061-0.0040-0.05780.12500.0694-0.0720ans=6039MatLab编程基础第三节编程-程序文件的编辑与调试设置路径FileSetpathMatLab编程基础第三节编程-函数类文件函数类文件函数M文件的结构函数M文件的调用子函数文件全局变量MatLab编程基础第三节编程-函数类文件函数M文件的结构function[输出变量Q1,Q2,…]=函数文件名(输入变量P1,P2,…)定义函数行;H1行;函数帮助文本;函数体;注释必须是文件名MatLab编程基础第三节编程-函数类文件:举例例1:定义一个二元函数%defineafunctionoftwovariablesfunctionyy=fun_1(x,y)yy=2*exp(-(x-2).^2-y.^2)+exp(-(x+2).^2-y.^2)-3*exp(-x.^2-(y+1).^2);例2:定义44的矩阵%definea4-by-4matrixfunctionyy=fun_2yy=[12123;3589;11279;159118];MatLab编程基础第三节编程-函数类文件函数M文件的调用[输出变量Q1,Q2,…]=函数文件名(输入变量P1,P2,…)例:inv(fun_2)ans=-0.0106-0.09460.06140.0412-0.06470.0942-0.17160.11130.1095-0.03910.0061-0.0040-0.05780.12500.0694-0.0720fun_1(1,1)ans=0.2505det(fun_2)ans=6039MatLab编程基础第三节编程-函数类文件子函数文件在同一个函数文件中可以建立多个函数,第一个叫主函数,其余的叫子函数。子函数只能被同一个文件中的主函数和其它子函数调用。MatLab编程基础第三节编程-函数类文件全局变量如果几个函数文件要共用一个变量,那么要在这些函数文件中都定义这个变量是全局变量。如果要在指令窗口中也使用这个变量,还要在指令窗口中定义这个变量为全局变量。必须在使用函数之前定义全局变量。global变量1变量2MatLab编程基础第三节编程-函数类文件例:ex_5.mfunctionyy=fun_3yy=[23;34];functionyy=fun_4globallambdayy=lambda*eye(size(fun_3))-fun_3;clearallgloballambdalambda=3;D=det(fun_4)MatLab编程基础第三节编程-流程控制流程控制循环结构分支结构其它指令MatLab编程基础第三节编程-流程控制循环结构for循环结构while循环结构for循环变量=起始值:步长:终止值循环体endwhile表达式循环体end用于不能确定循环次数的循环。当表达式为真时,执行循环体;执行后在判断表达式是否为真,是真则执行循环体,否则推出。用于能确定循环次数的循环。步长的默认值为1,可以是任意的正实数或负实数。MatLab编程基础第三节编程-流程控制:举例例1ex_1.m:对角矩阵的赋值clearallm=5;fori=1:ma(i,i)=i;endaa=1000002000003000004000005MatLab编程基础第三节编程-流程控制:举例例2ex_2.m:计算m的阶乘clearallm=10;a=1;fori=1:ma=i*a;endaa=3628800MatLab编程基础第三节编程-流程控制:举例例3ex_3.m:矩阵的赋值a=1.00000.50000.33330.50000.33330.25000.33330.25000.2000clearallm=3;n=3;fori=1:mforj=1:na(i,j)=1/(i+j-1);endendaMatLab编程基础第三节编程-流程控制:举例例4ex_4.m:矩阵指数的计算e=162.7871224.6754224.6754312.5707clearalle=zeros(size(fun_3));f=eye(size(fun_3));k=1;whilenorm(f,1)0e=e+f;f=fun_3*f/k;k=k+1;endefunctionyy=fun_3yy=[23;34];注:对比expm指令MatLab编程基础第三节编程-流程控制分支结构if分支结构switch分支结构if逻辑表达式1语句体1elseif逻辑表达式2语句体2else语句体3endswitch表达式(标量或字符串)case值1语句1case值2语句2otherwise语句3end在语句执行时,若逻辑表达式1为真,则执行语句体1;否则,判断逻辑表达式2是否为真,若真执行语句体2,否则执行语句体3。若表达式与值1相符,则执行语句1;若与值2相符,则执行语句2;依此类推。如果都不符合则执行语句3。MatLab编程基础第三节编程-流程控制:举例例1pdbsline.m:B样条函数pdbsline(-1)ans=0pdbsline(0.6)ans=0.6000pdbsline(1.36)ans=0.6400pdbsline(2.6)ans=0functionf=pdbsline(x)ifx0f=0;elseifx1f=x;elseifx2f=2-x;elsef=0;endMatLab编程基础第三节编程-流程控制:举例例2ex_6.m:单位换算clearallx=2.7;units='in';switchunitscase{'in
本文标题:MatLab_基础篇
链接地址:https://www.777doc.com/doc-2886989 .html