1MATLAB入门肖剑重庆大学数学与统计学院2–MATLAB最初是20世纪70年代后期由新墨西哥大学计算机科学系主任的CleveMoler用Fortran语言设计的,现在的MATLAB程序是1984年MathWorks公司用C语言开发的。MATLAB简介3MATLAB的主要应用领域(1)数值分析(2)数值和符号计算(3)工程与科学绘图(4)控制系统的设计(5)数字图像处理(6)数字信号处理(7)通讯系统设计与仿真(8)财务与金融工程4将数学和计算机技术结合创造性地解决实际问题熟练掌握MATLAB的命令操作方式掌握MATLAB程序设计方法以MATLAB为操作平台完成各种不同的任务实验方法猜想验证求解发现5MATLAB桌面命令窗口工作空间浏览命令历史窗口6命令窗口、编辑窗口、图形窗口7变量变量名的第一个字符必须是一个英文字母,最多可包括31个字符;变量名可由英文字母、数字和下划线混合组成;•在命令窗口中直接输入变量名称创建•A=9•A=•98x=linspace(0,pi,11)%11个从0到pi的等间隔数.1)数组构造:常采用“first:increment:last”和函数“linspace”两种方式来创建数组,如x=1:5(从1到5公差为1的等差数组)x=0:0.1:1(从0到1,公差为0.1)数组的创建9x(1:5)表示x的第1到第5个元素构成的数组.x(1:2:5)x([2,1,4])x(3)表示x的第3个元素2)数组的操作10A=[123];B=[222];3)数组的运算A.*B=[246];A./B=[0.50001.00001.5000];A.^B=[149];sin(A)=[0.84150.90930.1411];11max(v)求最大值min(v)求最小值sum(v)求和mean(v)求平均值sort(v)按升序排列数组函数返回12创建矩阵(二维数组)的常用方法:直接输入法三条规则:矩阵元素必须在方括号[]之内;同一行相邻元素间用逗号或空格分隔;矩阵的行与行之间必须用分号分隔.例3.二阶矩阵A=[12;34]A=1234矩阵--线性代数(二维数组)13命令文件(脚本式M文件)无输入参数,不返回参数对文件命名,保存在当前工作目录中.zyt.mM文件分为命令文件和函数文件两种x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)14函数文件(函数式M文件)可输入参数,也可返回参数主要用来定义函数子程序,它由function起头,后跟的函数名必须与文件名相同。例4计算第n个Fibonnaci数的函数文件fibfun.mfunctionf=fibfun(n)ifn2f=fibfun(n-1)+fibfun(n-2);elsef=1;end15MATLAB程序中的流程控制条件控制——有选择地运行程序块1.if/elseif语句分析下列程序,说明运行结果及原因cleara=100;b=10;ifabdisp('ab')%显示字符串abelsedisp('ab')%显示字符串abend162.for循环语法:for变量=初值:步长:终值可执行语句end例5求1+2+…+100(sum100.m)mysum=0;fori=1:1:100mysum=mysum+i;endmysum173.while循环while循环将循环体中的语句循环执行不定次数。语法:while条件表达式循环体语句end例6求1+2+…+100(sum100w.m)mysum=0;i=1;while(i=100)mysum=mysum+i;i=i+1;endmysum18helpsintypemagicclearclc常用MATLAB指令19+加.+点加-减.-点减^矩阵幂.^点幂*乘.*点乘/右除./点右除\左除.\点左除1.算术运算符2.关系运算符小于=小于等于大于=大于等于==等于~=不等于3.逻辑运算符&与(and)|或(or)~非(not)20Plot(X,Y)——最基本的二维图形命令plot命令自动打开一个图形窗口Figure1原理:用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上使用方法:(1)X,Y都是向量,且它们的长度相等;(2)如果X和Y都是维数相同矩阵,按列与列对应绘图21例7.x=0:0.1:2*pi;y=cos(x);plot(y)figure,plot(x,y)plot(y):以y的值为纵坐标,y的下标为横坐标。plot(x,y):以x为横坐标,以y为纵坐标22处理图形(2)hh=xlabel(string):在当前图形的x轴上加图例stringhh=ylabel(string):在当前图形的y轴上加图例stringhh=title(string):在当前图形的顶端上加图例stringhh=zlabel(string):在当前图形的z轴上加图例string1、在图形上图例和标注23例8在区间[0,2*pi]画sin(x)的图形,并加注图例“自变量X”、“函数Y”、“示意图”,并加格栅.解x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel('自变量X')ylabel('函数Y')title('示意图')gridon24例9在区间[0,2*pi]画sin(x),并分别标注“sin(x)””cos(x)”.解x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext(‘sin(x)’);gtext(’cos(x)’)命令gtext(‘string’)用鼠标放置标注在现有的图上.运行命令gtext(‘string’)时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注string放在当前十交叉的位置.(3)hh=gtext(‘string’)252、定制坐标Axis([xminxmaxyminymaxzminzmax])例10在区间[0.005,0.01]显示sin(1/x)的图形。解x=linspace(0.0001,0.01,1000);y=sin(1./x);plot(x,y)axis([0.0050.01-11])定制图形坐标将坐标轴返回到自动缺省值Axisautox、y、z的最大、最小值263、图形保持(1)holdonholdoff例11将y=sin(x)、y=cos(x)分别用点和线画出在同一屏幕上。解x=linspace(0,2*pi,30);y=sin(x);z=cos(x)plot(x,z)holdonplot(x,y)保持当前图形,以便继续画图到当前图上释放当前图形窗口27同时绘制多条曲线plot(x1,y1,x2,y2,…)例12.衰减振荡曲线函数:y=e-0.5xsin5x图形.x=0:0.1:4*pi;y=exp(-0.5*x);y1=y.*sin(5*x);plot(x,y1,x,y,’--r’,x,-y,’--r’)28plot(X,Y,s)s参数:-实线.点*星号^上三角:点线o圆s方形左三角-.点划线xx符号d菱形右三角--虚线++号v下三角p正五边形y黄色m紫红色c蓝绿色r红色g绿色b蓝色w白色k黑色••上述参数的不同组合可以为图形设置不同的线形、颜色和标识,调用时以单引号来引用,各选项直接相连,不需要分隔符。29•【例13】•x=0:0.1*pi:pi;•y=sin(x);•z=cos(x);•plot(x,y,'--k',x,z,'-.rd')00.511.522.533.5-1-0.8-0.6-0.4-0.200.20.40.60.8130图形窗口的分割subplot命令实现图形窗口分割.在一个图形窗口中显示几幅图象,对几个函数进行比较subplot(m,n,i):把图形窗口分割为m行n列子窗口,并选定第i个窗口为当前窗口。subplot(2,2,1)subplot(2,2,2)subplot(2,2,3)subplot(2,2,4)31解x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1);plot(x,y),title(‘sin(x)’)subplot(2,2,2);plot(x,z),title(‘cos(x)’)subplot(2,2,3);plot(x,a),title(‘sin(x)cos(x)’)subplot(2,2,4);plot(x,b),title(‘sin(x)/cos(x)’)例14将屏幕分割为四块,并分别画出y=sin(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)。32空间三维作图三维曲线:plot3设三维曲线的参数方程为:x=x(t),y=y(t),z=z(t),则其图形可由下面的命令绘出:例15:三维螺旋线plot3的用法与plot类似t=[0:0.1:10*pi];x=2*t;y=sin(t);z=cos(t);plot3(x,y,z);plot3(x,y,z,s)33空间三维作图网格生成函数:meshgridx,y为给定的向量,X,Y是网格划分后得到的网格矩阵绘制由函数z=z(x,y)确定的曲面时,首先需产生一个网格矩阵,然后计算函数在各网格点上的值。若x=y,则可简写为[X,Y]=meshgrid(x)[X,Y]=meshgrid(x,y)•x=[-8:0.5:8];y=[-8:0.5:8];•[X,Y]=meshgrid(x,y);•r=sqrt(X.^2+Y.^2)+eps;•Z=sin(r)./r;•mesh(X,Y,Z)例16:34-202-202-505xyPeaks•调用格式:•surf(x,y,z)——绘制三维曲面图,x,y,z为图形坐标向量•例17:•[X,Y,Z]=peaks(30)•※peaks为matlab•自动生成的三维测试图形•surf(X,Y,Z)35•函数的曲线•使用ezplot和ezplot3函数,可以方便的绘制二维和三维参数曲线.•ezplot函数调用格式:•ezplot(f,[xmin,xmax,ymin,ymax])•f是一个字符串•ezplot(x,y,[tmin,tmax])36•ezplot3函数调用格式:ezplot3(x,y,z,[tmin,tmax])•例19.绘制如下参数方程的曲线图tzttyextcossin10利用ezplot3函数可以绘制该方程曲线图.ezplot3('exp(t/10)','sin(t)*cos(t)','t',[0,6*pi])37•函数的曲面•ezmesh绘制函数表示曲面的网格图,也可以利用ezsurf绘制函数表示的曲面.•ezmesh命令格式:ezmesh(f,domain)•ezmesh(x,y,z,[smin,smax,tmin,tmax])•例20.绘制如下函数的曲面图223xxyyzezmesh('y^2-3*x*y+x^2',[-4,4,-4,4])38t=-pi:pi/10:pi;[xyz]=cylinder(1+sin(t));surf(x,y,z)axissquare柱面和球面k=5;n=2^k-1;theta=pi*(-n:2:n)/n;phi=(pi/2)*(-n:2:n)'/n;x=cos(phi)*cos(theta);y=cos(phi)*sin(theta);z=sin(phi)*ones(size(theta));colormap([000;111])C=hadamard(2^k);surf(x,y,z,C)axissquare39[x,y]=meshgri