《自动控制原理课程设计MATLAB及应用.ppt》由会员分享,可在线阅读,更多相关《自动控制原理课程设计MATLAB及应用.ppt(356页珍藏版)》请在三一办公上搜索。
1、2023/8/23,1,MATLAB及在控制系统课程中的应用,主讲:张德祥,2010年12月20日,2023/8/23,2,参考书目,1、Matlab及在电子信息课程中的应用(第二版)陈怀琛 电子工业出版社 2004年1月2、控制系统仿真与计算机辅助设计 薛定宇(东北大学)机械工业出版社 2005年1月3、控制系统数字仿真与CAD(第二版)张晓华(哈尔滨工业大学)机械工业出版社 2006年5月4、控制系统的数字仿真与计算机辅助设计 钱积新等 化学工业出版社 2003年5月5、基于MATLAB的系统分析与设计控制系统 楼顺天等 西安电子科技大学出版社6、MATLAB6.X 教程7、MATLAB与
2、控制系统仿真实践 定价:34 元作者:赵广元 书号:978-7-81124-787-9 北京航空航天大学出版社,2023/8/23,3,目 录,第1章 MATLAB 语言概述第2章 基本语法第3章 MATLAB 的开发环境和工具第4章 MATLAB 的其他函数库第5章 MATLAB的SIMULINK仿真第6章 MATLAB在自动控制原理中应用,2023/8/23,4,第1章 MATLAB语言概述,1.1 MATLAB语言的发展1.2 MATLAB语言的特点1.3 MATLAB的工作环境 1.3.1 命令窗 1.3.2 图形窗 1.3.3 文本编辑窗1.4 演示程序1.5 网络资源,2023/8
3、/23,5,1.1 MATLAB语言的发展,1.1.1 MATLAB 概述 MATLAB是集数值计算、符号运算及图形处理等强大功能于一体的科学计算语言,是一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算速度。MATLAB已成为一门高校必修的课程,也是最为普遍的计算工具之一。,2023/8/23,6,1.1 MATLAB语言的发展(续),1.1.2 Matlab的发展 MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler
4、出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK矩阵软件工具包库程序的的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。,2023/8/23,7,1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视
5、、更广博的数学和数据分析资源、更多的应用开发工具。2000年末又推出6.0版本。无论在界面的设计上还是在内容上较以前版本都有很大的进展。,2023/8/23,8,1.1 MATLAB语言的发展(续),1.1.3 Matlab的版本演化Matlab 1.0Pc matlab-matlab 386Matlab3.5+simulinkMatlab 4.0:simlink内嵌(1992)Matlab 5.0:全面的面向对象Matlab 5.15.3(1999)Matlab 6.0(2000)Matlab 6.5:购并了MATRIXxMatlab 7.0:(2004),2023/8/23,9,1.2 M
6、ATLAB语言的特点,友好的工作平台和编程环境简单易用的程序语言强大的科学计算及数据处理能力出色的图形处理功能应用广泛的模块集和工具箱实用的程序接口和发布平台模块化的设计和系统级的仿真,2023/8/23,10,1.3 MATLAB的工作环境,1.3.1 命令窗(Command Window)单行命令执行方式 执行结果直接显示1.3.2 图形窗(Figure Window)用图形方式表示计算结果1.3.3 文本编辑窗(File Editor)多行命令组成语言组,可以文件方式存盘,下面就具体看一下MATLAB 的工作环境演示。,2023/8/23,11,1.4 演示程序,在MATLAB的命令窗中
7、键入 demo或demos,%pend.mplot(-0.2,0.2,0;0,color,y,linestyle,-,linewidth,10);g=0.98;l=1;theta0=pi/6;x0=l*sin(theta0);y0=-l*cos(theta0);axis(-0.75,0.75,-1.25,0);axis(off);head=line(x0,y0,color,r,linestyle,.,erasemode,xor,markersize,40);body=line(0;x0,0,y0,color,b,linestyle,-,erasemode,xor);t=0;dt=0.01;wh
8、ile t=50 t=t+dt;theta=theta0*cos(sqrt(g/l)*t);x=l*sin(theta);y=-l*cos(theta);set(head,xdata,x,ydata,y);set(body,xdata,0;x,ydata,0;y);drawnow;end,2023/8/23,13,部分命令的演示,例1.求 的算术运算结果。(12+2*(7-4)/32 ans=2 例2.简单矩阵 的输入步骤。A=1,2,3;4,5,6;7,8,9 A=1 2 3 4 5 6 7 8 9,例3.矩阵的分行输入。A=1,2,34,5,67,8,9 A=1 2 3 4 5 6 7 8
9、 9 例4.指令的续行输入S=11/2+1/31/4+1/51/6+1/7-1/8 S=0.6345,例5.复数 表达,及计算。(1)z1=3+4i z1=3.0000+4.0000i(2)z2=1+2*iz3=2*exp(i*pi/6)z=z1*z2/z3 z2=1.0000+2.0000iz3=1.7321+1.0000iz=0.3349+5.5801i,例6.复数矩阵的生成及运算A=1,3;2,4-5,8;6,9*iB=1+5i,2+6i;3+8*i,4+9*i C=A*B A=1.0000-5.0000i 3.0000-8.0000i 2.0000-6.0000i 4.0000-9.0
10、000iB=1.0000+5.0000i 2.0000+6.0000i 3.0000+8.0000i 4.0000+9.0000iC=1.0e+002*0.9900 1.1600-0.0900i 1.1600+0.0900i 1.3700,例7.求上例复数矩阵C的实部、虚部、模和相角。C_real=real(C)C_imag=imag(C)C_magnitude=abs(C)C_phase=angle(C)*180/pi C_real=99 116 116 137C_imag=0-9 9 0C_magnitude=99.0000 116.3486 116.3486 137.0000C_phas
11、e=0-4.4365 4.4365 0,例8.用MATLAB计算 能得到 2 吗?(1)a=-8;r=a(1/3)r=1.0000+1.7321i(2)全部方根计算如下m=0,1,2;R=abs(a)(1/3);Theta=(angle(a)+2*pi*m)/3;rrr=R*exp(i*Theta)rrr=1.0000+1.7321i-2.0000+0.0000i 1.0000-1.7321i,(3)图形表示t=0:pi/20:2*pi;x=R*sin(t);y=R*cos(t);plot(x,y,b:),gridhold onplot(rrr(1),.,MarkerSize,30,Color
12、,r)plot(rrr(2,3),o,MarkerSize,15,Color,b)axis(-3,3,-3,3),axis squarehold off,例9.画出衰减振荡曲线 及其它的包络线。t的取值范围是 t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,-r,t,y0,:b,t,-y0,:b),例10.画出 所表示的三维曲面。的取值范围是-8,8.clear;x=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;m
13、esh(X,Y,Z);colormap(hot)xlabel(x),ylabel(y),zlabel(z),2023/8/23,22,1.5 网络资源,USENET新闻组MATLAB的新闻组是comp.soft-sys.MATLAB。浏览器指向http:/http:/网络上的工具箱http:/,2023/8/23,23,1.5 网络资源(续),BBS哈尔滨工业大学bbs:telnet:/上海交通大学bbs:telnet:/清华大学bbs mathtoolswww服务http:/http:/Matlab 大观园:,2023/8/23,24,第2章 基本语法,2.1 变量及其赋值2.2 矩阵的初等
14、运算2.3 元素群运算2.4 逻辑判断及流程控制2.5 基本绘图方法2.6 M文件及程序调试,2023/8/23,25,2.1 变量及其赋值,2.1.1 标识符与数 标识符是标识变量名、常量名、函数名、文件名的字符串的总称。1、表示符第1个字符必须是字母。2、长度不超过31个。3、区分大小写。4、变量中不能含有标点符号。5、变量可直接参与计算。6、变量一般无需事先定义,2023/8/23,26,2.1.1 标识符与数(续),7、特殊变量,2023/8/23,27,2.1.1 标识符与数(续),8、数值显示格式MATLAB中所有的量为双字长浮点数,显示按下面显示规则:在缺省情况下,当结果为整数,
15、作为整数显示;当结果为实数,以小数后4位的精度近似显示。如果结果中的有效数字超出了这一范围,以科学计数法显示结果。format命令改变显示格式,常用的的格式有long(16位)bank(2个十进制位)hex(十六进制)short(缺省)short e(5位加指数)+(符号)long e(16位加指数)rat(有理数近似),2023/8/23,28,2.1.2 矩阵及其元素的赋值,矩阵获取格式:变量=表达式(或数)1、直接输入:A=1 2 3;4 5 6;7,8,9*矩阵用中括号括起。*元素间用空格隔开,或用逗号隔开。*每行用分号;号表示回车。2、行向量 B=1 2 3 4 53、列向量 C=1
16、;2;3;4;5;每行命令后面的分号;表示结果不显示。,2023/8/23,29,2.1.2 矩阵及其元素的赋值(续),4、元素可用表达式表示 D=-1.3 sqrt(3)(1+2+3)/5+15、用语句生成 行向量 E=from:step:to 即E=开始数:步长:结束数 E=1:2:10 得E=1 3 5 7 96、矩阵连接 B=a b V=a;b,2023/8/23,30,2.1.2 矩阵及其元素的赋值(续),7、用函数创建 如:zeros(m,n)ones(m,n)eye(m,n)zeros(3);zeros(3,3);zeros(2,3);zeros(3,2);ones(3);one
17、s(3,3);ones(2,3);ones(3,2);eye(3);eye(3,3);eye(3,4);eye(4,3);,2023/8/23,31,2.1.2 矩阵及其元素的赋值(续),rand(m,n)%产生均匀分布随机数(0,1)rand(state,0)%把均匀分布伪随机发生器置为0状态randn(m,n)%产生正态分布随机数 magic(m)%产生魔方数组(对高维不适用)%即每行、每列及对角元素之和为(n3+n)/2linspace(a,b,n)%在a和b之间均匀产生n个点的值如:f=linspace(0,1,5)则 f=0 0.25 0.5 0.75 1.0logspace(a,b
18、,n)%在a和b之间对数分布产生n个点的值如:f=logspace(0,1,5)则 f=1.0000 1.7783 3.1623 5.6234 10.0000,2023/8/23,32,2.1.2 矩阵及其元素的赋值(续),矩阵中的元素(用圆括号中数字来注明)1.A(i,j)表示第i 行,第j列元素。2.A(i)表示第i个元素。矩阵中元素的排序如右所示3.A(i,j)=常量,表示给A中元素赋值。当下标超出原矩阵的尺寸,则自动扩展行列并补零。,2023/8/23,33,2.1.2 矩阵及其元素的赋值(续),4.A(:,j)表示A阵中第j 列所有元素。5.A(i,:)表示A阵中第i 行所有元素。6
19、.A(2:3,4:6)表示第2行到第3行,第4列到第6列的子矩阵。7.A(3:7)指A阵中第3个到第7个元素(列优先)矩阵的序号编址:按列计数。8.A(2)=表示去除矩阵中元素。此时矩阵变为行矩阵。9.A(:)指A阵中所有元素组成列向量。,2023/8/23,34,2.1.3 复数,复数的虚部部分用i 或j表示。如:2+3i,3-4j复数可直接计算。如:z=2+3i;3-4j 或 f=z+2+j;3;复数的实部和虚部可分别赋值。但 i和j需先清除。如:clear i j f=1,3;5,7+2,4;6,8*j,2023/8/23,35,2.1.3 复数,B=Z 表示共轭转置。B=conj(Z)
20、表示共轭。如:Z=1+2i,3-4j则:B=Z 有 B=1-2i 3+4j B=conj(Z)有 B=1-2i,3+4j,2023/8/23,36,2.1.3 复数,B=conj(Z)表示转置。B=Z.表示非共轭复数转置。如:Z=1+2i,3-4j则:B=conj(Z)有 B=1+2i 3-4j B=Z.有 B=1+2i 3-4j,2023/8/23,37,2.1.4 变量的查询,存储,提取,变量的查询 who 或 whos变量的存储 save 文件名.mat 变量列表 如:save sar a b c 变量中间用空格隔开,不能加逗号。变量的提取 load 文件名变量的清除 clear 变量列
21、表清除所有变量 clear all,2023/8/23,38,2.1.5 基本赋值矩阵,为了方便给大量元素赋值,MATLAB提供了一些基本矩阵。见书中表2.1如:A=zeros(m,n)全0矩阵B=ones(m,n)全1矩阵C=eye(m,n)单位矩阵D=rand(m,n)01之间随机数均匀分布randn(state,0);%把随机数发生器置0E=randn(m,n)均值为0的,单位方差正态分布随机矩阵 F=magic(m)魔方矩阵,2023/8/23,39,G=linspace(a,b,n)线性分隔,a,b之间均匀产生n个数H=logspace(a,b,n)对数分隔,a,b之间产生n个数K=
22、diag(A);取A中对角线元素得到列向量。P=diag(diag(A)产生对角阵 a=1 2 3 4;b=diag(a)产生对角阵如 A=1 2 3;4 5 6;7 8 9 B=diag(A)则:B=1;5;9;,2023/8/23,40,2.2 矩阵的初等运算,2.2.1 矩阵的加减乘除1、+,-,*,/,2、点乘:.*右除:./左除:.C=A+B;C=A-B C=A*B 注意:矩阵 必须相匹配 X=AB 表示AX=B X=A-1B 即 X=inv(A)*B X=A/B 表示XB=A X=AB-1 即 X=A*inv(B)m,n=size(A)计算矩阵A的行列大小K=length(A)计算
23、矩阵A的行列大小中最大的数,2023/8/23,41,2.2.1 矩阵的加减乘除,点乘、点除C=A.*B 对应元素间相乘。,2023/8/23,42,C=A./B 对应元素间相除。C=A.B,2023/8/23,43,2.2.2 矩阵除法及线性方程组的解,方阵的行列式 B=det(A)即B=|A|方阵的求逆 B=inv(A)即B=A-1 条件|A|0方阵的伪逆矩阵 B=pinv(A)条件|A|=0方阵的伴随矩阵 B=inv(A)*det(A)即B=A-1|A|,2023/8/23,44,2.2.3 矩阵的乘方和幂次函数,1、矩阵乘方2、.元素对元素的乘方C=An 表示A阵自乘n次。C=A(-n
24、)表示A阵的逆矩阵自乘n次。C=A.n 表示A阵中每个元素自乘n次。C=A.(-n)表示A阵中每个元素自乘n次后的逆阵。,如 C=A2C=A.2C=A(-2)=inv(A)2C=A.(-2),2023/8/23,46,2.2.4 矩阵结构形式的提取与变换,B=fliplr(A)%将A矩阵左右翻转 B=flipud(A)%将A矩阵上下翻转 B=reshape(A,m,n)%将A阵重组为mxn矩阵B=rot90(A)%将A矩阵逆时针翻转90度B=diag(A)%提取A矩阵的对角组成列向量B=tril(A)%提取A矩阵的左下三角部分B=triu(A)%提取A矩阵的右上三角部分,如:B=fliplr(
25、A)B=flipud(A)B=rot90(A)B=tril(A),2023/8/23,48,2.3 元素群运算,2.3.1 数组及其赋值1、t=初值:步长:终值;如t=0:0.1:1 tt=10:-1:12、t=linspace(初值,终值,点数)如:tr=linspace(0,2*pi,9)3、t=logspace(初值,终值,点数)如:tp=logspace(0,1,11),2023/8/23,49,2.3.2 元素群的四则运算,表示对矩阵中每个元素进行运算 如 X=1 2 3;Y=4 5 6Z=X.*Y Z=4 10 18Z=X.Y Z=4 2.5 2Z=X.Y Z=1 32 729 Z
26、=X.N N=2 Z=1 4 9Z=2.X Y Z=2 4 8 16 32 64,2023/8/23,50,2.3.3 元素群的函数,等命令可以直接MATLAB中exp、sprt、sin、cos使用在矩阵上,这种运算只是定义在矩阵的单个元素上,即分别对矩阵的每个元素进行运算。MATLAB中也提供了基本的三角函数。注意其中的取整,2023/8/23,51,2.3.3 元素群的函数,2023/8/23,52,2.4 逻辑判断及流程控制,2.4.1 关系操作符MATLAB常用的关系操作符有:(大于)、=(大于或等于)、=(等于)、=(不等于)。MATLAB的关系操作符可以用来比较两个大小相同的数组,
27、或者比较一个数组和一个标量。在与标量比较时,结果和数组大小一样。a=1:9;b=a4b=0 0 0 0 1 1 1 1 1c=a(a4)c=5 6 7 8 9,2023/8/23,53,2.4.1 关系操作符,矩阵查找和排序子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如:a=10:20;find(a15)ans=7 8 9 10 11矩阵的排序使用sort函数,它将矩阵按照升序排列。,2023/8/23,54,2.4.2 逻辑运算,逻辑操作符定义了一种与或非的关系表达式。MATLAB的逻辑操作符有&(与)、|(或)、(非)、xor(异或)。例如:c=(a4)c=1 1 1
28、1 0 0 0 0 0c=(a4)&(a7)c=0 0 0 0 1 1 0 0 0C=xor(A,B),2023/8/23,55,2.4.3 其他关系与逻辑函数,xor(x,y)异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1。all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1。,%逻辑函数的运用示例。randn(state,1),R=randn(3,6)%创建正态随机阵 L=abs(R)1.5%不等式条件运算,结果给出逻辑数组 R(L)
29、=0%逻辑1对应的元素赋0值。s=(find(R=0)%利用find获得符合关系等式条件的元素单下标 R(s)=111%利用单下标定位赋值 ii,jj=find(R=111);%利用find获得符合关系等式条件的元素双下标disp(ii),disp(jj),【例】关系运算运用之一:求近似极限,修补图形缺口。t=-2*pi:pi/10:2*pi;y=sin(t)./t;subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title(残缺图形)tt=t+(t=0)*eps;yy=sin(tt)./tt;subplot(1
30、,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2)xlabel(t),ylabel(yy),title(正确图形)Warning:Divide by zero.,2023/8/23,59,【例】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。,t=linspace(0,3*pi,500);y=sin(t);z1=(t2*pi).*y;w=(tpi/3subplot(1,3,1),plot(t,y,:r),ylabel(y)subplot(1,3,2),plot(t,z1,:r),axis(0 10-1 1)subplot(1,3,3
31、),plot(t,z2,-b),axis(0 10-1 1),2023/8/23,61,【例】写出生成下图所示波形的MATLAB脚本文件M文件。图中虚线为正弦波,要求它的负半波被置零,且在 处被削顶。,t=linspace(0,3*pi,500);y=sin(t);z1=(t2*pi).*y;w=(tpi/3,2023/8/23,63,2.4.4 流程控制语句,脚本对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。MATLAB提供了逻辑解决方案,它允许用户把多个命令放在一个简单的文本文件中,如同在MATLAB中键入命令一般,这种文件称为脚本文件,由于脚本文
32、件以m为扩展名,它常称为M文件。脚本文件为文本形式的,对跨平台处理十分有利。使用脚本文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便;增加注释可以为脚本中的命令作文挡以免以后忘记。,2023/8/23,64,2.4.4 流程控制语句,为了便于应用,MATLAB提供了一些流程控制的命令。这些命令对脚本编写带来了一些方便,但是需要注意的是,尽量不要使用这些流程控制命令,尤其是循环控制命令。If 语句很多情况下,命令的序列必须根据关系的检验有条件的执行,它由if-else-end结构提供。它的结构如下:if expression1 commands1elseif expr
33、ession2 commands2elseif else commandsend,2023/8/23,65,2.4.4 流程控制语句,在执行过程中,MATLAB依次检查各个表达式,只执行第一个表达式为真的命令串,接下来的关系表达式不检验,跳过其余的if-else-end结构,而且,最后的else命令可有可无。,2023/8/23,66,求,2023/8/23,67,2.4.4 流程控制语句,for循环for循环允许一组命令以固定的次数重复,它的一般形式是for x=array commandendfor 和end之间的命令串按数组array的每一列执行一次,直到n次后终止。如:for j=1:
34、2:10 y=j+j.2;end,2023/8/23,68,2.4.4 流程控制语句,for循环不能使用内部重新赋值循环变量而终止;for循环内部接受任何有效的MATLAB数组;for循环可以嵌套;只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法不应当出现循环语句。Tic/toc循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。,2023/8/23,69,2.4.4 流程控制语句,while循环与for循环以固定的次数求一组指令相反,while循环以不定的次数求一组语句的值。While循环的一般形式为:while exp
35、ression commondsend只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。,2023/8/23,70,求,2023/8/23,71,【例】Fibonacci数组的元素满足Fibonacci 规则:,;且。现要求该数组中第一个大于10000的元素,a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i);i=i+1;end;ia(i)i=21 ans=10946,2023/8/23,72,用for循环指令来寻求Fibonacc数组中第一个大于10000的元素
36、。,n=100;a=ones(1,n);for i=3:n a(i)=a(i-1)+a(i-2);if a(i)=10000 a(i)break;end;Endi ans=10946i=21,2023/8/23,73,2.4.4 流程控制语句,Switch 语句是一种均衡实现的多分支语句。Switch expressionCase 值1 commands1Case 值2 commands2 Otherwise commandsNend,2023/8/23,74,学生的成绩管理,用来演示switch结构的应用。,clear;for i=1:10 ai=89+i;bi=79+i;ci=69+i;d
37、i=59+i;end;c=d,c;Name=Jack,Marry,Peter,Rose,Tom;Mark=72,83,56,94,100;Rank=cell(1,5);S=struct(Name,Name,Marks,Mark,Rank,Rank);,for i=1:5 switch S(i).Marks case 100 S(i).Rank=满分;case a S(i).Rank=优秀;case b S(i).Rank=良好;case c S(i).Rank=及格;otherwise S(i).Rank=不及格;endenddisp(学生姓名,得分,等级);disp()for i=1:5;d
38、isp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end;,2023/8/23,76,2.5 基本绘图方法,2.5.1 直角坐标中的两维曲线plot(y)以y的下标作为x坐标,以y值作为y坐标。plot(x,y)数组x和y的长度应匹配。每次绘制将清除以前的图形。,2023/8/23,77,2.5.1 直角坐标中的两维曲线,图形的标注和图例1、title(text)%给图形加上标题2、xlabel(text)%给X轴加上说明3、ylabel(text)%给Y轴加上说明4、zlabel(text)%给Z轴加上说明5、t
39、ext(x,y,string)%在图形指定位置加上说明6、gtext(string)%利用鼠标在图形加上说明7、legend(string1,string2,.)%给图形加图例8、legend off%关闭图例,如:作y=sin(t)的二维图形t=linspace(0,3*pi,200);y=sin(t);plot(t,y);title(y=sin(t);xlabel(t/s);ylabel(y=sin(t);text(3,0.4,y=sin(t);legend(y=sin(t);gtext(y=sin(t),2023/8/23,79,2.5.2 线型、点型和颜色,plot(x,y,r:)后面
40、是颜色和线型,2023/8/23,80,2.5.3 多条曲线的绘制,1、plot(x1,y1,x2,y2);2、plot(x1,y1,r,x2,y2);3、plot(x1,y1)hold 是乒乓切换 hold on%图形保持 plot(x2,y2,r)hold off%解除保持4、plot(t,y1;y2;y3)%自动给颜色和线型。5、plotyy(x1,y1,x2,y2)%可画2个不同纵坐标的图,t=0:0.1:3*pi;y1=sin(t);y2=cos(t);plot(t,y1,r-.,t,y2,k);xlabel(t/s);ylabel(y1=sin(t),y2=cos(t);title
41、(y1=sin(t),y2=cos(t);text(3,0.4,y1=sin(t);text(2,0,y2=cos(t);legend(y1=sin(t),y2=cos(t);,2023/8/23,82,2.5.4 屏幕控制与其他2维绘图,1.figure%打开图形窗口2.figure(n)%打开指定图形窗口3.close%关闭当前图形窗口4.close all%关闭所有图形窗口5.close(n)%关闭指定图形窗口6.clf%清除窗口内所有内容,2023/8/23,83,2.5.4 屏幕控制与其他2维绘图(续),subplot(m,n,p)%图形分为m x n个子图,并指定第p个。排号从左到
42、右,从上到下。stem(t,y)%绘脉冲图stairs(t,y)%绘阶梯图 bar(t,y)%绘条形图errorbar(t,y)%绘误差条形图hist(y)%绘直方图fill(t,y,r)%绘填充图,如y=exp(-0.1t)*sin(t)t=0:0.3:4*pi;y=exp(-0.1*t).*sin(t);figure(3)plot(t,y,k*);figure(4)subplot(2,2,1);stem(t,y,k.);title(stem(t,y);subplot(2,2,2);stairs(t,y,b);title(stairs(t,y);subplot(2,2,3);bar(t,y,
43、g);title(bar(t,y);subplot(2,2,4);fill(t,y,r);title(fill(t,y,r);,hist(y)t=0:0.1:4*pi;y=exp(-0.1*t).*sin(t);y1=5.*y.*sin(t);plotyy(t,y,t,y1);,2023/8/23,86,2.5.4 屏幕控制与其他2维绘图(续),pause%暂停 grid on%增加网格 grid off%取消网格 grid%乒乓增加和取消网格 loglog%双对数坐标log10 semilogx%半对数坐标,x轴半对数 semilogy%半对数坐标,y轴半对数 polar(theta,rho
44、)%极坐标图,2023/8/23,87,2.5.4 屏幕控制与其他2维绘图(续),23、虚数的绘图-Z为虚数 plot(Z)%实部为x坐标,虚部为y轴 plot(t,Z)%虚部丢失axis(xmin,xmax,ymin,ymax)%定义坐标axis square%两轴坐标长度相等axis equal%两轴坐标刻度相同axis tight%坐标区域和图形吻合set(gca,xtick,-1,3,7,11)%在x轴指定处标记刻度,clear,clft=0:2*pi/99:2*pi;x=1.15*cos(t);y=3.25*sin(t);%y为长轴,x为短轴subplot(2,3,1);plot(x
45、,y),axis normal,grid on,title(Normal and Grid on)subplot(2,3,2);plot(x,y),axis equal,grid on,title(Equal)subplot(2,3,3);plot(x,y),axis square,grid on,title(Square)subplot(2,3,4);plot(x,y),axis image,box off,title(Image and Box off)subplot(2,3,5);plot(x,y),axis image fill,box offtitle(Image and Fill)
46、subplot(2,3,6);plot(x,y),axis tight,box off,title(Tight),2023/8/23,90,2.5.5 三维曲线和曲面,plot3(x,y,z,r);%画三维曲线Plot3(x1,y1,z1,r,x2,y2,z2,b)t=0:0.02*pi:2*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd);view(-82,58);box onlegend(链,宝石);,2023/8/23,91,2.5.5 三维曲线和曲面(续),2.mesh(z)%画三维网格曲线,z为x,y的函数 mesh(x
47、,y,z)%常用画三维网格曲线 mesh(x,y,z,r)%带颜色的三维图x=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.*X+Y.*Y);Z=sin(R)./R;mesh(Z);,2023/8/23,92,2.5.5 三维曲线和曲面(续),3.surf(Z)%由多个小面组成表面视图 surf(x,y,z)surf(x,y,z,r)x=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=abs(X)+abs(Y)+eps;Z=sin(R)./R;surf(Z);,2023/8/23
48、,93,2.5.5 三维曲线和曲面(续),4.Meshgrid(x,y)%生成网格点坐标函数x=-4:4;y=x;X,Y=meshgrid(x,y);Z=X.2+Y.2;surf(X,Y,Z);colormap(hot)%Black-red-yellow-white颜色hold onstem3(X,Y,Z,bo);,2023/8/23,94,2.5.5 三维曲线和曲面(续),5.view(方位角,俯仰角)%改变视角6.shading flat%把曲面上的小格平滑掉 shading interp%更平滑7.rotate3d%旋转8.contour3(Z)%画等高线9.meshc,surfc%带等
49、高线的三维作图10.colormap(hot)%hot,cool,gray,copper,pink,jet,prism11.colorbar%画彩色条12.hidden off%透视被叠压的图形 hidden on%消隐被叠压的图形,2023/8/23,95,2.5.5 三维曲线和曲面(续),clear,clfX0,Y0,Z0=sphere(30);%产生单位球面的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0;%产生半径为2的球面的三维坐标surf(X0,Y0,Z0);%画单位球面shading interp%采用插补明暗处理hold on;mesh(X,Y,Z);colormap(hot
50、);hold off%采用hot色图hidden off%产生透视效果axis equal,axis off%不显示坐标轴,2023/8/23,96,2.5.5 三维曲线和曲面(续),13.Moviein,getframe,movie%动画axis equal M=moviein(16);for j=1:16 plot(fft(eye(j+16);M(:,j)=getframe;endmovie(M,30);14.alpha(v)%透明度控制 v0,1,clear;clf;shg,x=3*pi*(-1:0.05:1);y=x;X,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+