1基本使用方法计算机在材料科学与工程中应用数学软件Matlab2本讲主要内容Matlab介绍Matlab的基本用法3数学实验程序设计语言:BASIC,Pascal,FORTRAN,C,...数值计算软件:Matlab,Scilab,Octave,...符号计算软件:Mathematica,Maple,...交互式数学软件:MathCAD,Calcwin,...统计软件:SAS,SPSS,Minitab,...数学规划软件:Lingo,Lindo,...工程计算软件:ANSYS,ABAQUS,Fluent,LS-DYNA其它:几何画板,MathLab,MathType...数学相关软件Matlab4Matlab简介在欧美各高等院校,Matlab是线性代数、数值分析、数理统计、自动控制、数字信号处理、动态系统仿真、图像处理等课程的基本教学工具,已成为大学生必须掌握的基本技能之一Matlab是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年推向市场以来,经过多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境MatrixLaboratory矩阵实验室Matlab5Matlab简介Matlab的发展1980年,Moler教授用Fortran语言编写了集命令翻译、科学计算于一身的一套交互式软件系统1984年,Moler等成立了TheMathWorks的公司,用C语言完全改写Matlab,并推出第一个商业版到九十年代,在国际上30几个数学类科技应用软件中,Matlab在数值计算方面独占鳌头。目前,Matlab已成为世界顶尖的数学应用软件就影响而言,至今仍然没有一个别的计算软件可与Matlab匹敌6Matlab的发行版本1984年,Matlab1.0(DOS版,182K,20多个函数)1992年,Matlab4.0(93年推出Windows版,加入simulink)1994年,Matlab4.2(得到广泛重视和应用)1999年,Matlab5.3(真正实现32位运算)2002年,Matlab6.5(采用JIT加速器)2004年,Matlab7.0自2006年起,Matlab每年更新两次目前最新版为R2016b(2016年9月发布)Matlab简介7获取Matlab软件Matlab的安装插入光盘,自动运行;或点击安装程序setup.exe必须安装的部件•Matlab•SymbolicMathToolbox•ExtendedSymbolicMath这里以Matlab7为例自R2008a开始增加了激活要求(符号计算工具箱合成了一个)8Matlab的功能与特点Matlab具有很强的数值计算功能Matlab以矩阵作为数据操作的基本单位,但无需预先指定矩阵维数(动态定维)按照IEEE的数值计算标准进行计算提供十分丰富的数值计算函数,方便计算,提高效率Matlab命令与数学中的符号、公式非常接近,可读性强,容易掌握Matlab是一个交互式软件系统输入一条命令,立即就可以得到该命令的运行结果9Matlab的特点与功能Matlab的符号计算功能Matlab和著名的符号计算语言Maple相结合Matlab的编程功能Matlab具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,且简单易学、编程效率高Matlab的绘图功能Matlab提供丰富的绘图命令,很方便实现数据的可视化10Matlab丰富的工具箱(toolbox)Matlab的特点与功能根据专门领域中的特殊需要而设计的各种可选工具箱Matlab的Simulink动态仿真集成环境提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能SymbolicMathPDEOptimizationSignalprocessImageProcessStatisticsControlSystemSystemIdentification……11本讲主要内容Matlab的基本用法12Matlab的基本用法Matlab系统的启动使用Windows“开始”菜单运行Matlab系统启动程序matlab双击Matlab快捷图标Matlab系统的退出在Matlab主窗口File菜单中选择ExitMatlab在Matlab命令窗口输入exit或quit单击Matlab主窗口的“关闭”按钮13Matlab的工作界面命令窗口当前工作目录当前工作空间输入命令的历史记录命令提示符14Matlab变量的命名规则Matlab变量以字母开头后面可以跟字母、数字和下划线长度不超过63个字符(6.5版本以前为19个)区分字母的大小写Matlab语句的通常形式变量=表达式表达式是用运算符将有关运算量连接起来的式子,其结果被赋给赋值号“=”左边的变量15who显示工作空间中的所有变量whos显示变量的详细属性查看已定义的变量变量的查看16pi:圆周率,其值为imag(log(-1))inf,Inf:无穷大nan,NaN:Not-a-Number,一个不定值,如0/0eps:浮点运算相对精度特殊变量ansi,j:虚部单位,即1注:应尽量避免给系统预定义变量重新赋值!系统预定义的变量系统预定义变量17Matlab数值运算Matlab中的数默认是双精度实数,表示方法同C语言3,-9,0.4,1.603e-12,3.23e+20浮点运算的相对误差为eps浮点数表示范围为:10-308~10308复数的输入z=3+4i(4与i之间不能有空格)数与算术表达式注:复数作为矩阵元素输入时,加号两边不能有空格!18+加法-减法*乘法/和\除法(右除和左除)^幂运算命令分隔符:逗号和分号数学运算符Matlab数值运算19若不想在屏幕上输出结果,可以在语句最后加分号如果语句很长,可用续行符“…”(三个点)续行续行符的前面需留一个空格例:分号和续行符的作用分号和续行符20定义矩阵:直接输入法矩阵用方括号“[]”括起矩阵同一行中的元素之间用空格或逗号分隔矩阵行与行之间用分号分开直接输入法中,分号可以用回车代替例:A=[123;456;789]矩阵的输入Matlab的操作对象矩阵是命令提示符,不用输入回车运行所输入的命令21矩阵元素可以是任何数值表达式例:x=[-1.3,sqrt(3),(1+2+3)*4/5]矩阵元素赋值矩阵元素的单独赋值例:x(5)=abs(x(1))例:x(5)=abs(x(6))??动态定维功能:Matlab会自动扩展向量的长度,并将未赋值部分置零22大矩阵可以把小矩阵作为其元素矩阵元素赋值例:A=[A;111213]在原矩阵的下方加一行如何在原矩阵的右边添加一列?23单个元素的引用例:A(2,3)矩阵元素的引用利用小括弧和元素所在的位置(下标)x(i):向量x中的第i个元素A(i,j):矩阵A中的第i行,第j列元素24矩阵元素的引用多个元素的引用:冒号的特殊用法例:x=1:2:5y=1:2:6例:x=2:1:5y=2:5例:x=3:2:1a:b:c产生一个由等差序列组成的向量:a是首项,b是公差,c确定最后一项;若b=1,则b和其前面的冒号可以省略25例:x(1:3)A(3,1:3)矩阵元素的引用例:A(1,:)A(:,1:3)A(:,:)A(i:j,m:n)表示由矩阵A的第i到第j行和第m到第n列交叉线上的元素组成的子矩阵可利用冒号提取矩阵的整行或整列26矩阵操作提取矩阵的部分元素:冒号运算符A(:)A的所有元素A(:,:)矩阵A的所有元素A(:,k)A的第k列,A(k,:)A的第k行A(k:m)A的第k到第m个元素A(:,k:m)A的第k到第m列组成的子矩阵A(:)与A(:,:)的区别?如何获得由A的第一、三行和第一、二列组成的子矩阵?自己动手27矩阵操作从大矩阵中提取一个子矩阵A(I,J)其中I=[i1,i2,…,im],J=[j1,j2,…,jm]表示由A的第i1,i2,…,im行和第j1,j2,…,jm列组成的子矩阵。例:A([1,3,4],[2,3])删除指定的行或列例:A(3,:)=[]例:A(:,[1,2,4])=[]28特殊矩阵Matlab提供了一些函数,用于生成一些常见的特殊矩阵例:C=magic(3)D=hilb(4)E=rand(4)一些特殊矩阵的生成29常见矩阵生成函数zeros(m,n)生成一个m行n列的零矩阵,m=n时可简写为zeros(n)ones(m,n)生成一个m行n列的元素全为1的矩阵,m=n时可写为ones(n)eye(m,n)生成一个主对角线全为1的m行n列矩阵,m=n时可简写为eye(n),即为n维单位矩阵diag(X)若X是矩阵,则diag(X)为X的主对角线向量若X是向量,diag(X)产生以X为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生0~1间均匀分布的随机矩阵m=n时简写为rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵m=n时简写为randn(n)其它特殊矩阵生成函数:magic、hilb、pascal等30矩阵基本运算矩阵的加减:对应分量进行运算矩阵的普通乘法参与加减运算的矩阵具有相同的维数!A=[1,2;3,4];B=[5,6;7,8]C=A+BD=B-A例:参与运算的矩阵须满足线性代数中矩阵相乘的原则!A=[1,2,3;4,5,6];B=[2,1;4,3]C=B*A例:31矩阵基本运算矩阵的除法:/、\右除和左除若A可逆方阵,则A\B==A的逆左乘B==inv(A)*BB/A==A的逆右乘B==B*inv(A)X=A\B==A*X=BX=B/A==X*A=B通常,矩阵除法可以理解为当A和B行数相等时可进行左除当A和B列数相等时可进行右除32矩阵的乘方A是方阵,p是正整数A^p表示A的p次幂,即p个A相乘。若a是标量,12000000nddDd12^000^0^00^nadadaDad则33矩阵转置矩阵的转置与共轭转置’共轭转置.’转置,矩阵元素不取共轭点与单引号之间不能有空格!A=[1,2;3i,4i]B=A'C=A.'例:34矩阵的旋转矩阵的旋转fliplr(A)左右旋转flipud(A)上下旋转rot90(A)逆时针旋转90度;rot90(A,k)逆时针旋转k×90度A=[123;456]B=fliplr(A)C=flipud(A)D=rot90(A)E=rot90(A,-1)例:注意矩阵旋转与转置的区别!35改变矩阵的形状改变矩阵的形状:reshape(A,m,n)将矩阵元素按列方向进行重新排列成一个m×n的新矩阵新矩阵的元素个数必须与原矩阵元素个数相等!A=[1,2,3;4,5,6;7,8,9;10,11,12]B=reshape(A,4,3)例:C=reshape(A,2,6)C=reshape(A,5,2)×36查看矩阵的大小查看矩阵的大小:size、lengthsize(A)返回矩阵A的行数和列数size(A,1)返回矩阵A的行数size(A,2)返回矩阵A的列数length(x)返回向量X的长度length(A)等价于max(size(A))A=[1,2,3;4,5,6]size(A)size(A,1)size(A,2)例:length(A)x=[5:2:10];length(x)37Matlab帮助系统联机帮助help显示指定命令的简短使用说明例:helpei