




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB 程序设计与应用,第一篇 基本概述 1 MATLAB小转与外观 2 初探MATLAB 第二篇 绘图功能 3 二维平面绘图 4 三维立体绘图 5 特殊图形 6 图像显示与读写 7 动画制作 8 句柄图形与GUI设计 9 GUIDE:GUI设计环境 第三篇 变量与数据结构 10 矩阵的处理与运算 11 字符与字符串 12 多维数组 13 单元数组 14 结构数组 15 稀疏矩阵,第四篇 程序设计 16 MATLAB的运算符 17 M文件 18 程序流程控制 19 程序调试 20 文件输出及输入 21 程序计时 22 程序代码与内存的优化 23 应用程序接口 第五篇 数值运算与其它应用
2、24 线性代数 25 多项式的处理与分析 26 一般数学函数的处理与分析 27 内插方法 28 曲线拟合与回归分析 29 常微分方程 30 GUI应用举例 31 数据与函数的可视化,1 MATLAB小转与外观,1.1 MATLAB小转 1.2 MATLAB第五版外观 1.3 MATLAB第六版外观 本章介绍MATLAB与 MathWorks公司的背景和历史,并说明MATLAB第五版和第六版的外观。,1.1 MATLAB 小转,MATLAB是由MathWorks 软件公司于1984年推出的数学软件。其名称是由矩阵实验室 (MATrix LABoratory)合成的。由此可知最早的开发理念是提供一
3、套完善的矩阵计算命令。但是,随着数值运算需求的发展,MATLAB已经成为各种系统仿真、科学计算可视化为一体的交互式软件系统。 MATLAB虽然在1984年首次推出商业版,但其前身早在1978年就已出现。作者是任教于美国新墨西哥大学的 Cleve Moler 教授。事实上MATLAB 的许多核心计算技术来源于LINPACK和EISPACK 。这是两个美国国科会计划所开发的数值计算软件。 Cleve Moler 教授也是计划负责人之一。 虽然Cleve Moler 教授是MATLAB的原作者,但是第一个将MATLAB商品化的人不是他,而是Jack Little,他在Stanford大学主修控制,当
4、他接触到MATLAB时,直觉告诉他这是一个潜力很大的软件。因此,他在毕业后没有多久,既决定将MATLAB用C语言重写,并于1984年成立MathWorks 软件公司,首次推出MATLAB商用版。,1.1 MATLAB 小转,MathWorks虽然已经是超过500人的大公司,但是至今还是私人企业,没有上市。这与Jack Little的个人理念有关,他认为MATLAB的发展方向应该与顾客的需求与软件的完整性为首要目标,而不是以获利为主。因此MATLAB一直在稳定中求进步。由于Jack Little保守的个性,也使MathWorks不涉及MATLAB和SimuLink以外的事业。 MATLAB 早期
5、以矩阵运算为主(第1,2,3版)。但随着科学计算可视化需求的日增,MATLAB 第4版推出句柄图形,这是一个里程碑。另一个里程碑则是MATLAB 第5版,允许用户建立自己的数据类型,而不再只是局限于二维的矩阵。 MATLAB语言比较好学,它的语法规则简单,更适合于专业科技人员的思维方式和书写习惯。它用解释方式工作,因此更加简洁和智能化,人机交互性能好。,1.1 MATLAB 小转,MATLAB是一个计算核心,围绕这个核心,有许多针对不同应用所开发的应用程序,称为工具箱(ToolBoxes)例如 Control ToolBox,Signal processing ToolBox,Wavelet
6、ToolBox,Optimization ToolBox,Spline ToolBox,Symbolic ToolBox。工具箱实际上是用MATLAB的基本语句编写成的程序的集合,用以解决某一方面的专门问题。任何人都可以自己生成工具箱,因此,很多研究成果被直接做成MATLAB的工具箱直接发布。在互联网上有大量的免费的MATLAB工具箱可以使用。 除了MATLAB以外, MathWorks 还有两项主要产品SimuLink和 Stateflow。 SimuLink用于连续和离散时间的动态系统仿真。 Stateflow 用于仿真有限状态机(Finite State Machines)和事件驱动系统
7、(Event-driven Systems)。,1.2 MATLAB 第五版外观,进入MATLAB第五版界面后,可以看到标准的下拉式菜单(Pull-down Menu),File,Edit,Window,Help。其中File | Preference 是比较重要的。使用这个界面,可以设置MATLAB的数值显示方式、文本编辑器、命令窗口的字体和背景、拷贝图形的选项等。 MATLAB主界面中还有其它窗口,其中四个是直接和MATLAB的操作相关。 工作空间浏览器( Workspace Browser ) 当前目录浏览器( Current Directory Browser ) SIMULINK库浏
8、览器(SIMULINK Library Browser) 在线帮助(On-line Help),1.2 MATLAB 第五版外观,工作空间浏览器:MATLAB用来储存变量的空间,称为工作空间。工作空间浏览器用来浏览工作空间中的变量,包括其名称、数据类型、字节大小等。 路径浏览器:MATLAB在执行每个命令时,会根据一个搜寻路径寻找命令的位置。路径浏览器的功能是对搜寻路径进行修改。 SIMULINK库浏览器:SIMULINK是一个仿真工具,它不是MATLAB的一个部分,所有如果您没有安装SIMULINK,就不会有此图标。 在线帮助:此图标打开MATLAB的在线帮助窗口,您可以一路单击所要的类别或
9、命令,直到得到所需要的帮助信息。,1.3 MATLAB 第六版外观,MATLAB第六版中有更多的窗口,可以有用View菜单控制它们,这些窗口分别是 View | Command Window命令窗口 View | Command History命令历史窗口 View | Help Browser在线帮助浏览器 View | Workspace Browser工作空间浏览器 View | Launch Pad交互界面分类目录窗口 View | Profiler程序性能解析窗口,1.3 MATLAB 第六版外观,1.Command Window 命令窗口是MATLAB操作最主要的窗口。在这个窗口中
10、可以键入各种MATLAB的命令、函数、表达式,并显示除图形以外的所有结果。命令窗口的每一行前有提示符。命令窗口内显示的字符和数值采用不同的颜色。输入的命令、表达式和计算结果采用黑色字体,字符串用红色,if ,for等关键词采用蓝色。MATLAB把命令窗口中输入的命令都记录在Command History中,因此MATLAB的命令窗口不仅可以对输入的命令编辑和运行,而且可以对已输入的命令进行回调、编辑、重新运行。 2. Command History 历史命令窗口出现在MATLAB界面的左下方,用来记录并显示已运行的命令、函数、表达式,并允许用户对它们进行选择、复制和重运行。用户可以方便地输入和
11、修改长命令,选择多行命令产生M文件。,1.3 MATLAB 第六版外观,3. Current Directory Browser 当前目录浏览器窗口默认地出现在MATLAB界面左上方后台,用来设置当前目录,可以随时显示当前目录下的MATLAB文件的信息,包括文件名、文件类型、最后修改时间和文件说明等。并可以复制、编辑和运行M文件,以及加载MAT类型的数据文件。 4. Workspace Browser 工作空间浏览器窗口在MATLAB界面左上方后台,用来显示MATLAB工作空间中的变量名、数据结构、类型、大小和在内存中的字节数。在该窗口中,还可以对工作空间中的变量进行观察、编辑、提取和保存。,
12、1.3 MATLAB 第六版外观,5. Array Editor 在默认情况下,数组编辑窗口不随MATLAB界面出现,只有在工作空间窗口中选择数值、字符变量,单击鼠标右键出现选单,选择Open或双击该变量时才会出现数组编辑器窗口,并且相应的变量会出现在窗口中。用户可以直接在数组编辑器窗口中修改打开的数组,甚至可以更改数据结构和显示方式。 6. Launch Pad 交互界面分类目录窗口不随MATLAB界面出现,可以从MATLAB菜单View中打开,在这个窗口中,以展开的树状结构显示当前安装的MATLAB交互界面,便于用户迅速查阅。 7. Editor/Debugger 在默认情况下,M文件编辑
13、、调试窗口不随MATLAB启动出现。只有需要编写M文件时,才启动该窗口,可以编辑M文件,对M文件进行交互式调试。,1.3 MATLAB 第六版外观,8. Help Navigator/Browser 帮助导航、浏览器窗口在默认情况下不随MATLAM启动出现,当单击工具栏上的?图标,或选择View-Help时出现。主要作用是显示MATLAB的帮助信息。 9. Profiler 程序性能解析窗口用来对MATLAB中各命令的耗时进行分析,是MATLAB6.5新增的窗口,选择View-Profiler或在命令窗口中输入Profile Viewer命令都可激活这个窗口。,2 初探MATLAB,2.1 使
14、用变量与基本运算 2.5 M文件 2.2 向量与矩阵的处理 2.6 搜索路径 2.3 常用数学函数 2.7 工作空间与变量 2.4 程序流程控制 本章介绍 MATLAB 的基本环境和操作,如果您是MATLAB的初学者,建议您先熟悉本章各节的内容,能够帮助您很快进入状态。当然,如果您是MATLAB老手,可以直接跳到后面各章节。,2.1 使用变量与基本运算,基本运算在Command Window下进行。基本运算符号 + - * / (5*2+3.5)/5 ans=2.7000 %其中ans是存计算结果的默认变量 x=32 x=32; %表达式式后加; 表示结果不在屏幕上显示 x=5*sin(pi/
15、3),y=cos(pi/2) %在一行中的多条语句用,或;隔开 x=5*sin(pi/3)+cos(pi/4). +exp(2) %如果一个语句过长,可以用 .将其延伸到下一行 MATLAB变量名第一个字符必须是英文字母,字母间不能有空格,最多只能有31各字母或数字。变量不需要预先声明,变量以默认的double数据类型保存。,2.2 向量与矩阵的处理,MATLAB的特色在于可以方便的使用向量和矩阵进行存储和运算,用到 , ; ( ) : 1、矩阵的表示 A=1 2;3 4 或 A=1 ,2;3, 4 B=1 2 3 或 B=1 ,2, 3 %行向量 C=1;2;3%列向量 行向量看作只有一行的
16、矩阵,列向量看作只有一列的矩阵。,2、矩阵的处理 A=1 2 3;4 5 6;7 8 9 输入一个33的矩阵 A= 1 2 3 4 5 6 7 8 9 对矩阵中的单个元素处理,A(1,2)=5 表示将矩阵A中第1行,第2列的元素改为5。 B=A(2,1:3) %取出A的第2行的元素 B= 4 5 6,2.2 向量与矩阵的处理,A; 1 1 %在A中加入第4行 ans= 1 3 4 6 7 9 1 1 %取出矩阵的一部分形成一个新矩阵 B=A(1:2,1:2) B = 1 2 4 5,A( 1,:)= %删除A的第1行:表示所有行 A = % 表示空矩阵 4 5 6 7 8 9 A( :,1 3
17、)= %删除A的第1,3列 A = 5 8 A=A,B %将B合并到A中 A = 5 1 2 8 4 5,2.3 常用的数学函数,MATLAB是一个科学计算软件,所以它支持很多数学函数 abs(-4) ans=4 sin(pi/4) ans=0.7071 exp(2) ans=7.3891 log(2) ans =0.6931 log10(2) ans =0.3010,MATLAB也支持复数运算,用i或j表示单位虚数 z=5+6j z=5.0000 + 6.0000i real(z) ans=5 imag(z) ans=6 angle(z) ans=0.8761 conj(z) ans=5.0
18、000 - 6.0000i,2.3 常用的数学函数,这些基本的数学函数,也可以用于向量或矩阵,例如 x=4 2j 9 sqrt(x) ans=2.0000 1.0000 + 1.0000i 3.0000 log(x) ans=1.3863 0.6931 + 1.5708i 2.1972 y=1 2 3;4 5 6; sin(y) ans = 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794,还有一些函数是专门对向量设计的,例如 a=1 2 3 0 9; min(a) ans=0 max(a) ans=9 mean(a) ans=3 sum(a) ans=
19、15 sort(a) ans= 0 1 2 3 9,2.3 常用的数学函数,Trigonometric sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. acos - Inverse cosine. acosh - Inverse hyperbolic cosine. tan - Tangent. tanh - Hyperbolic tangent. atan - Inverse tan
20、gent. atan2 - Four quadrant inverse tangent.,atanh - Inverse hyperbolic tangent. sec - Secant. sech - Hyperbolic secant. asec - Inverse secant. asech - Inverse hyperbolic secant. csc - Cosecant. csch - Hyperbolic cosecant. acsc - Inverse cosecant. acsch - Inverse hyperbolic cosecant. cot - Cotangent
21、. coth - Hyperbolic cotangent. acot - Inverse cotangent. acoth - Inverse hyperbolic cotangent.,2.3 常用的数学函数,Exponential exp - Exponential. log - Natural logarithm. log10 - Common (base 10) logarithm. log2 - Base 2 logarithm and dissect floating point number. pow2 - Base 2 power and scale floating poi
22、nt number. realpow - Power that will error out on complex result. reallog - Natural logarithm of real number. realsqrt - Square root of number greater than or equal to zero. sqrt - Square root.,Complex abs - Absolute value. angle - Phase angle. complex - Construct complex data from real and imaginar
23、y parts. conj - Complex conjugate. imag - Complex imaginary part. real - Complex real part. unwrap - Unwrap phase angle. isreal - True for real array. cplxpair - Sort numbers into complex conjugate pairs.,2.3 常用的数学函数,Elementary matrices zeros - Zeros array. ones - Ones array. eye - Identity matrix.
24、repmat - Replicate and tile array. rand - Uniformly distributed random numbers. randn - Normally distributed random numbers. linspace - Linearly spaced vector. logspace - Logarithmically spaced vector. freqspace - Frequency spacing for frequency response. meshgrid - X and Y arrays for 3-D plots.,Bas
25、ic array information size - Size of array. length - Length of vector. ndims - Number of dimensions. numel - Number of elements. disp - Display matrix or text. isempty - True for empty array. isequal - True if arrays are numerically equal. isnumeric - True for numeric arrays. islogical - True for log
26、ical array. logical - Convert numeric values to logical.,2.3 常用的数学函数,MATLAB的在线帮助 help用来查询已知命令(函数) 的用法,例如,已知inv是用来求逆矩阵的命令,输入help inv就可以得到有关inv命令的用法。 lookfor 用来寻找未知的命令,例如,输入lookfor inverse,MATLAB会列出所有关键词与inverse相关的命令,找到所需要的命令后,可以用help进一步得到其用法。lookfor实际上是对所有搜索目录下的M文件进行关键词和第一行注释的对比。 helpwin产生在线帮助窗口,与MAT
27、LAB窗口工具栏中的?按钮一样。 helpdesk产生HTML方式的在线帮助,包含各种pdf格式的使用手册。 doc产生特定函数的HTML形式的在线帮助,例如,doc eig。,2.4 程序流程控制,MATLAB提供了循环流程控制的语句,最简单的循环流程控制语句是for-end 语句,用法是 for 变量 = 向量,表达式, end 执行时,变量被依次设定为向量的每个元素的值,然后执行表达式。 for k =1:4, x(k)=1/k, end 另外一个常用的循环流程控制的语句是while-end语句 while 条件式, 表达式, end x=1; while x=4, x=x+1, end
28、 只要条件成立,表达式就会一直被重复执行。因此在这种循环语句中,条件式中一定要有变量,使得条件式从成立变为不成立。,2.4 程序流程控制,MATLAB也提供了条件判断流程控制的语句,最简单的条件判断流程控制语句是if-else-end 语句,基本用法是 if 条件式,表达式1 else 表达式2,end x=1; if x0, y=1, else y=2, end 如果条件成立,则执行表达式1,否则,执行表达式2。有关程序流程控制在第18章中将做更详细的介绍。,2.5 M文件,要一次执行多条MATLAB语句,可以将这些语句存放在一个扩展名为M的文件中,并在MATLAB的命令窗口下输入此文件的主
29、文件名即可。因为这些文件都以M为扩展名,所以通称为M文件。 M文件是纯文本文件,可以用任何一种纯文本编辑软件进行编辑,例如:Windows 附件中的“记事本”。MATLAB中也提供了M文件的编辑软件。一般来说,不要用WORD一类的文本编辑软件来写M文件,因为这类软件中有隐含的控制符,MATLAB不认识这些符号。 M文件可分为脚本(Scripts)和 函数(Functions)两种。 脚本的执行与和将个别MATLAB语句在命令窗口中执行是一样的。可以直接使用工作空间(WorkSpace)中的已有的变量,脚本中的变量在工作空间中也可以看到。(全局变量) 函数则要依靠输入变量(Input Argum
30、ents)和输出变量(Output Arguments)来传递信息。函数中的变量只在本函数中可以看到。(局部变量),2.6 搜索路径,每次MATLAB遇到一个命令时(例如 aa),会按照一定的搜索路径(文件夹)进行搜索,搜索的顺序是 1、检查 aa 是否为MATLAB工作空间中的变量。若是,则取用。 2、若不是,检查aa是否为永久常数,若是,则取用。 3、若不是,检查aa是否为当前工作目录中的M文件,若是,则取用。 4、若不是,检查aa是否为搜索路径下的M文件,若是,则取用。 5、若不是,MATLAB发出错误信息。Undefined function or variable aa.,2.6 搜
31、索路径,有两种方法可以使MATLAB启动后,加载用户定义的搜索路径。 1.MATLAB默认的搜索路径在文件matlabrc.m中定义,MATLAB启动时会自动执行此文件。因此,用户可以直接修改这个文件,添加新的目录(文件夹)到这个文件的搜索路径中。 2. MATLAB在执行matlabrc.m的同时,也会在默认的搜索路径中寻找startup.m文件,如果存在,则执行所包含的命令。因此,可以将MATLAB启动时所需要执行的命令,包括更改搜索路径的命令放在这个文件中。 在MATLAB的执行过程中,可以用路径浏览器修改搜索路径。有两种方法可以得到MATLAB的路径浏览器窗口,一是在命令窗口中输入pa
32、thtool命令,二是在MATLAB菜单中选File-set pah选项。,2.7 工作空间与变量,MATLAB运行时,将已定义的变量储存在计算机内存中,这些存储变量的内存称为工作空间(Base WorkSpace)。当运行某一函数时,进入该函数的临时工作空间,临时工作空间与工作空间是不同的,在临时工作空间内的变量改变不影响工作空间中的变量值。当函数运行结束时,MATLAB清除临时工作空间(删除临时工作空间中所有的变量),回到MATLAB的工作空间。 与工作空间有关的主要命令 Who 查看工作空间中的变量 Whos查看工作空间中的变量的详细信息 Clear x清除工作空间中的变量x Clear
33、 all清除工作空间中的所有变量,2.7 工作空间与变量,为了方便用户,MATLAB中定义了永久常数(Permanent Constants),这些永久常数在查看工作空间时看不到,但使用者可以直接取用。 MATLAB中的永久常数有 i 或 j 基本虚数单位 eps系统的浮点精确度 Inf无限大,例如1/0 nan 或 NaN 不确定数,例如 0/0 pi圆周率(3.14159) realmax系统所能表示的最大数 realmin系统所能表示的最小数 nargin函数的输入变量个数 nargout函数的输出变量个数,2.7 工作空间与变量,有时我们希望将本次计算的结果保留,以便下一次使用。MAT
34、LAB提供了存储和加载工作空间中变量的命令。 save 将工作空间中所有变量保存到matlab.mat文件中。 Save filename 将工作空间中所有变量保存到filename.mat文件中。 Save filename x,y 将工作空间中变量x,y保存到filename.mat文件中。 Load filename 将filename.mat文件中所有变量加栽到工作空间中。 MATLAB还提供了更多的文件输入/输出方式,详见第20章。,3 二维平面绘图,3.1 基本二维绘图命令 3.2 图形的控制 3.3 图轴(坐标轴)的控制 3.4 加入文字说明 MATLAB不但擅长于与矩阵相关的各
35、种数值运算,也有非常强大的绘图功能,特别适合于各种科学计算的可视化(Scientific Visualization)。本章将介绍MATLAB的基本二维(平面)绘图功能,其它更高级的绘图功能,将在后续各章中陆续介绍。,3.1 基本二维绘图命令,MATLAB中的plot 是最基本的绘图命令,plot是一个功能强大的函数。下面我们通过一些实例说明它的用法。 例3.1 x=0:0.2:2*pi;%在0到2之间以0.2为步长取点 y=sin(x);%计算所取点的函数值 plot(x,y)%进行二维平面绘图 例3.2 x=0:0.2:2*pi; %在0到2之间以0.2为步长取点 plot(x,sin(x
36、),x,cos(x); %进行二维平面多曲线绘图,3.1 基本二维绘图命令,用plot 函数可以对矩阵变量绘图。如果只给定一个矩阵y, plot(y) 可以对 y 的每个列向量(Column Vector)绘图。 例3.3( plot 函数对一个矩阵绘图) y=1 2 3;4 5 6;7 8 9; plot(y); 如果x,y都是矩阵, plot (x,y)将会取 y 的每个列向量和对应的x的行向量绘图。 例3.4( plot 函数对一个向量和一个矩阵绘图) x= 1 2 3; y=1 1 1;2 2 2;3 3 3; plot(x,y); 例3.5( plot 函数对两个矩阵绘图) x= 1
37、 2 3;4 5 6;7 8 9; y=1 1 1;2 2 2;3 3 3; plot(x,y); 注意:x可以是一行,也可以是多行,多行时x的列数必须与y的行数相等。,3.2 图形的控制,用plot 函数绘图时可以控制图形的颜色和标记。 例3.6(颜色控制) x=0:0.2:2*pi; %在0到2之间以0.2为步长取点 plot(x,sin(x), r,x,cos(x), y); %进行二维平面多曲线绘图 此例中,绘出两条曲线图,第一条曲线是红色,第二条曲线是黄色。 例3.7(标记控制) x=0:0.2:2*pi; %在0到2之间以0.2为步长取点 plot(x,sin(x), o,x,co
38、s(x), +); %进行二维平面多曲线绘图 此例中,绘出两条曲线图,第一条曲线以“o”为标记,第二条曲线以“+”为标记。,3.2 图形的控制,例3.8(同时控制颜色和标记) x=0:0.2:2*pi; %在0到2之间以0.2为步长取点 plot(x,sin(x), r+,x,cos(x), yo); %进行二维平面多曲线绘图 此例中,绘出两条曲线图,第一条曲线是红色,以“+”为标记,第二条曲线是黄色,以“o”为标记。 例3.9(曲线类型的控制) x=0:0.2:2*pi; %在0到2之间以0.2为步长取点 plot(x,sin(x), r,x,cos(x), b- ); %进行二维平面多曲线
39、绘图 此例中,绘出两条曲线图,第一条曲线是红色实线,第二条曲线是蓝色虚线。,3.2 图形的控制,用plot 函数绘图时图形的颜色选项表 plot( )中的参数图形的颜色RGB值 B蓝色(Blue) 0,0,1 C青色(Cyan) 0,1,1 G绿色( Green ) 0,1,0 K黑色( Black ) 0,0,0 M紫色(Magenta) 1,0,1 R红色(Red) 1,0,0 W白色(White) 1,1,1 Y黄色(Yellow) 1,1,0 说明:可以直接用RGB值控制图形的颜色。,3.2 图形的控制,曲线格式表 plot()中参数曲线格式 -实线(默认) -虚线 :点线 -.点划线
40、 在不同的MATLAB版本中支持的曲线格式可能不尽相同。高的版本支持更多的曲线格式。,曲线标记符号表 plot()中参数曲线标记 o圆形 +加号 x叉号 *星号 .点号 在不同的MATLAB版本中支持的曲线标记可能不尽相同。高的版本支持更多的曲线标记。,3.3 图轴(坐标轴)的控制,plot可以根据图形自动调整坐标的范围和坐标的标记。如果有特殊需要,用户也可以根据自己的需要指定这些参数。其基本命令和语法是 axis( xmin, xmax, ymin, ymax) %指定坐标范围 set(gca, ytick ,0 1 2 3 4)%指定y轴的标记 hold on(off)%保持(不保持)当前
41、图形 grid on (off)%打开(关闭)网格线 box on (off)%画出(取消)图形外围的长方形 subplot(n, m, p)%在一个窗口画多个图形 说明:图轴的颜色和图形窗口的背景色可以用set()函数自由设置。,3.4 加入文字说明,例3.10(在一个窗口画多个图形) x=0:0.2:2*pi subplot(2, 2, 1);plot(x,sin(x); subplot(2, 2, 2);plot(x,cos(x); subplot(2, 2, 3);plot(x,sin(2*x); subplot(2, 2, 4);plot(x,cos(2*x); 例3.11 (文字说
42、明) x=0:0.2:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,r,x,y2,g); xlabel(t=0 to 2*pi); ylabel(value of sin(t) and cos(t); title(示意图); legend(sin(t),cos(t);,命令功能 title图形的标题 xlabelx轴的说明 ylabely轴的说明 zlabelz轴的说明 legend多条曲线的说明 text在图形中加入文字 gtext用鼠标确定文字的位置,4 三维立体绘图,4.1 基本三维绘图命令 4.2 立体图形和图轴的基本技巧 4.3 曲面颜色的控制 4.3 三
43、维图形的注释 在科学计算可视化(Scientific Visualization)中,三维空间的立体绘图是非常重要的技巧。本章将介绍三维空间的各种立体绘图命令。,4.1 基本三维绘图命令,Mesh、surf 和plot3 是三维绘图的基本命令,mesh可以画出立体网状图,surf 可以画出三维曲面图。plot3可以画出三维曲线图。 例4.1 (立体网状图) x=linspace(-2,2,25);%在x轴 -2,2之间取25个点 y=linspace(-2,2,25);%在y轴 -2,2之间取25个点 xx,yy=meshgrid(x,y);%xx,yy 是2525的矩阵 zz=xx.*exp
44、(-xx.2-yy.2);%计算函数值,zz是2525的矩阵 mesh(xx,yy,zz);%画出立体网状图 colormap( cool );%以冷色呈现,4.1 基本三维绘图命令,例4.2(三维曲面图) x=linspace(-2,2,25);%在x轴 -2,2之间取25个点 y=linspace(-2,2,25);%在y轴 -2,2之间取25个点 xx,yy=meshgrid(x,y);%xx,yy 是2525的矩阵 zz=xx.*exp(-xx.2-yy.2);%计算函数值,zz是2525的矩阵 surf(xx,yy,zz);%画出三维曲面图 colormap(hot);%以暖色呈现,
45、4.1 基本三维绘图命令,例4.3(三维曲线图) t=linspace(0,20*pi,501);%在0到20之间取501个点 plot3(t.*sin(t),t.*cos(t),t);%画tsin(t),tcos(t),t的曲线 例4.4(两条三维曲线图) t=linspace(0,20*pi,501); plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t); 例4.5(根据矩阵画三维曲线图) x,y=meshgrid(-2:0.1:2);%在 2 2 2 2区域上取网格点 z=y.*exp(-x.2-y.2);%计算函数值 plot3(x,
46、y,z);%画三维曲线图,4.1 基本三维绘图命令,MATLAB中的 ezsurf 命令可以使用户更灵活、方便地画出立体曲面图。 ezsurf(f) plots a graph of f(x,y) using SURF where f is a string or a symbolic expression representing a mathematical function involving two symbolic variables, say x and y. The function f is plotted over the default domain -2*pi x 2*p
47、i, -2*pi y 2*pi. The computational grid is chosen according to the amount of variation that occurs. ezsurf(f,DOMAIN) plots f over the specified DOMAIN instead of the default DOMAIN = -2*pi,2*pi,-2*pi,2*pi. The DOMAIN can be the 4-by-1 vector xmin,xmax,ymin,ymax or the 2-by-1 vector a,b (to plot over
48、 a x b, a y b).,4.1 基本三维绘图命令,If f is a function of the variables u and v (rather than x and y), then the domain endpoints umin, umax, vmin, and vmax are sorted alphabetically. Thus, ezsurf(u2 - v3,0,1,3,6) plots u2 - v3 over 0 u 1, 3 v 6. ezsurf(x,y,z) plots the parametric surface x = x(s,t), y = y(
49、s,t), and z = z(s,t) over the square -2*pi s 2*pi and -2*pi t 2*pi. ezsurf(x,y,z,smin,smax,tmin,tmax) or ezsurf(x,y,z,a,b) uses the pecified domain. ezsurf(.,N) plots f over the default domain using an N-by-N grid. The default value for N is 60. ezsurf(.,circ) plots f over a disk centered on the dom
50、ain.,4.2 立体图形和图轴的基本技巧,以on/off来切换的命令 命令说明 hidden隐藏(on)或显示(off)被遮盖的网线 zoom允许(on)或取消(off)以鼠标单击放大图形 rotate3d允许(on)或取消(off)以鼠标单击旋转图轴 axis显示(on)或不显示(off)图轴 box显示(on)或不显示(off)图轴的外框 more允许(on)或不允许(off)命令窗口的输出暂停 hold在绘制新图时,保留(on)或不保留(off)旧图,4.3 曲面颜色的控制,colormap 可以用来作曲面不同的颜色对比,MATLAB提供的颜色对照表如下 命令说明 colormap h
51、svHSV颜色对照表(默认值) colormap hot 代表“热”的颜色对照表 colormap cool代表“冷”的颜色对照表 colormap gray代表“灰色”的颜色对照表 colormap copper代表“铜色”的颜色对照表 colormap bone代表“X光片”的颜色对照表 colormap pink代表“粉红”的颜色对照表 colormap flag代表“旗帜”的颜色对照表 用colormapeditor 命令可以编辑颜色对照表。,4.3 曲面颜色的控制,alpha(a) 设置图形的透明度,0a1 colorbar 用不同的颜色表示曲面的高度 brighten(colorm
52、ap,c) -1 c 1 使对照表中颜色对照表变亮或变暗 shading(method) 对曲面进行不同方式的着色,method可以是 interp根据小曲面的四个顶点颜色连续变化 flat 每个小曲面的颜色均匀一致 faceted每个小曲面的颜色均匀,显示边界(默认值) hidden on/off隐藏/显示mesh图形中被遮挡的部分,4.3 曲面颜色的控制,light 命令建立一个照明对象,对图形的呈现效果做进一步的控制。 LIGHT adds a LIGHT object to the current axes, with all properties set to their defau
53、lt values. LIGHT(Param1, Value1, ., ParamN, ValueN) adds a light object to the current axes, with properties Param1-ParamN set to the values specified in Value1-ValueN. L=LIGHT(.) returns a handle to the LIGHT object. get(L) 得到当前照明对象的参数。 set(L, Position,1 0 1,Color,1 1 1) 更详细的用法见MATLAB的在线帮助。,4.3 曲面颜
54、色的控制,x=linspace(-2,2,25);%在x轴 -2,2之间取25个点 y=linspace(-2,2,25);%在y轴 -2,2之间取25个点 xx,yy=meshgrid(x,y);%xx,yy 是2525的矩阵 zz=xx.*exp(-xx.2-yy.2);%计算函数值,zz是2525的矩阵 surf(xx,yy,zz);%画出三维曲面图 colormap(hot);pause%以暖色呈现 colorbar; pause%用不同的颜色表示曲面的高度 colormap cool; pause%以冷色呈现 shading interp; pause%用interp方式着色 bri
55、ghten(colormap,0.8);%改变对比度 alpha(1/2);%改变透明度,4.4 三维图形的注释,Graph annotation title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. zlabel - Z-axis label. colorbar - Display color bar (color scale). text - Text annotation. gtext - Mouse placement of text. plotedit - Experimental graph editi
56、ng and annotation tools.,5 特殊图形,5.1 长条图 5.6 实心图 5.2 面积图 5.7 向量场图 5.3 扇形图 5.8 等高线图 5.4 针头图 5.9 其它高级绘图功能图 5.5 阶梯图 本章介绍MATLAB擅长的几种特殊的图形命令,这些命令大部分可用于二维和三维的绘图,特别适合于数据可视化的目的。,5.1 长条图,长条图(Bar Graphs)特别适合于少量离散的数据。用bar和bar3 可以画命令不同的长条图。 x=1 3 4 5 2;bar(x); x=2 3 4 5 7;1 2 3 2 1;bar(x); x=2 3 4 5 7;1 2 3 2 1;
57、bar(x,stack); x=2 3 4 5 7;1 2 3 2 1;bar3(x); x=2 3 4 5 7;1 2 3 2 1;bar3(x,group); 要画水平的长条图可以使用barh和bar3h命令。,5.2 面积图,面积图(Aera Graphs)以堆栈方式呈现的长条图,特别适合于具有叠加关系的数据。用area 命令画面积图。 y=rand(10,3)*100; x=1:10; area(x,y); xlabel(year ); ylabel(count ); 这是某校10年人员变化情况,第一条带表示本科生,第二条带表示研究生,第三条带表示博士生。,5.3 扇型图,用pie 命
58、令可以画出平面扇型图(Pie Charts) x=2 3 4 5; label=东,西,南,北; pie(x,label) 如果x 的总和小于1,则pie命令直接将的元素视为百分比,因此可以画出不完全的扇型图。 x=0.21 0.14 0.38; pie(x),5.3 扇型图,pie 命令还有一个特殊的功能,可以将一个或数个扇型向外拖出,以强调部分数据。 x=2 3 4 5; explode= 1 1 0 0; pie(x, explode) 要画立体的扇型图,用pie3 命令 x=2 3 4 5; label=春,夏,秋,冬 pie3(x, label);,5.4 针头图,Stem 命令可以
59、画针头图就是以一个大头针表示一点的数据 t=0:0.2:4*pi; y=cos(t).*exp(-t/5); stem(t, y) ; pause stem(t, y,fill )%实心的针头图 要画立体的针头图,用stem3 命令 theta=-pi:0.05:pi; x=cos(theta); y=sin(theta); z=abs(cos(3* theta).*exp(-abs(theta/3); stem3(x, y, z);,5.5 阶梯图,使用stairs 命令可以画阶梯图(stairstep Plot) t=0:0.4:4*pi; y=cos(t).*exp(-t./5); stairs(t, y) 若加上针头图,则可见两者的相似之处 t=0:0.4:4*pi; y=cos(t).*exp(-t./5); stairs(t, y,r)%r表示红色 hold on; stem(t, y),5.6 实心图,MATLAB的fill 命令将数据点视为多边形的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢板合同协议书样板图
- 中国染布行业市场前景预测及投资价值评估分析报告
- 商务包车运营方案范文
- 麻辣烫创业计划书例文
- 中国橡胶及橡胶制品项目投资计划书
- 喷头维修合同协议书
- 外卖超时计划书
- 校园桌游创业计划书模板
- 经纪合同合作协议书
- 马病复习资料
- 工程师转正工作总结
- 8 推翻帝制 民族觉醒 说课稿 -2023-2024学年道德与法治五年级下册统编版
- 丽声北极星分级绘本第二级下-
- 变电站数字孪生框架构建与关键技术研究
- 2025-2030年中国报废汽车回收行业市场十三五发展规划及投资战略研究报告新版
- DIP支付下的病案首页填写
- 两癌防治知识培训
- KCA试题库完整版
- 2025届湖南省高考化学第一轮复习模拟选择题-化学与生活43道(附答案)
- 《思想政治教育方法论》考研(第3版)郑永廷配套考试题库及答案【含名校真题、典型题】
- 肩袖损伤的治疗与护理
评论
0/150
提交评论