1、南京航空航天大学 王正盛1MATLAB 数学工具软件实例简明教程王 正 盛 编写南 京 航 空 航 天 大 学南京航空航天大学 王正盛2第一章 MATLAB 简介MALAB 译于矩阵实验室MATrix LABoratory 是用来提供通往LINPACK 和EISPACK 矩阵软件包接口的 后来它渐渐发展成了通用科技计算图视交互系统和程序语言MATLAB 的基本数据单位是矩阵它的指令表达与数学工程中常用的习惯形式十分相似比如矩阵方程Ax=b 在MATLAB 中被写成A*x=b 而若要通过A,b 求x 那么只要写x=Ab 即可完全不需要对矩阵的乘法和求逆进行编程因此用MATLAB 解算问题要比用C
2、 Fortran 等语言简捷得多MATLAB 发展到现在已经成为一个系列产品 MATLAB 主包和各种可选的toolbox 工具包主包中有数百个核心内部函数迄今所有的三十几个工具包又可分为两类功能性工具包和学科性工具包功能性工具包主要用来扩充MATLAB 的符号计算功能图视建模仿真功能文字处理功能以及硬件实时交互功能这种功能性工具包用于多种学科而学科性工具包是专业性比较强的如控制工具包Control Toolbox 信号处理工具包(SignalProcessing Toolbox) 通信工具包(Communication Toolbox)等都属此类开放性也许是MATLAB 最重要最受人欢迎的特
3、点除内部函数外所有 MATLAB主包文件和各工具包文件都是可读可改的源文件用户可通过对源文件的修改或加入自己编写文件去构成新的专用工具包MATLAB 已经受了用户的多年考验在欧美发达国家 MATLAB 已经成为应用线性代数自动控制理论数理统计数字信号处理时间序列分析动态系统仿真等高级课程的基本教学工具成为攻读学位的大学生硕士生博士生必须掌握的基本技能在设计研究单位和工业部门MATLAB 被广泛地用于研究和解决各种具体工程问题第二章 MATLAB 入门2.1 工作窗和指令行的操作除了通过菜单选项对工作窗进行控制外 MATLAB 还提供了许多通过键盘输入的控制指令如下表MATLAB 工作窗中的部分
4、通用指令quit 关闭和退出MATLABclc擦除MATLAB 工作窗中的所有显示内容clf 擦除MATLAB 的当前图形窗中的图形clear 清除内存中的变量和函数pack 收集内存碎片以扩大内存空间dir 列出指定目录下的文件和子目录清单cd 改变当前工作子目录disp 在运行中显示变量和文字内容type 显示所有指定文件的全部内容echo 控制运行文件指令是否显示的开关南京航空航天大学 王正盛3hold 控制当前图形窗对象是否被刷新启动MATLAB 后就可以利用它工作了由于MATLAB 是一种交互式语言随时输入指令即时给出运算结果是它的主要工作方式当然更可以编制程序详见第七章比如要计算1
5、 52 0 3+sin( . )的值只要在光标位置处键入2*sin(0.3*pi)/(1+sqrt(5)然后按Enter 键,该指令便被执行并给出结果ans = 0.5000下面介绍控制光标对指令进行编辑的一些常用操作键常用操作键键 名作 用键 名作 用 前寻式调回已输入过的指令行Home 使光标移到当前行的首端 后寻式调回已输入过的指令行End 使光标移到当前行的尾端 在 当前行中左移光标Delete 删除光标右表边的字符 在 当前行中右移光标Backspace删除光标左表边的字符PageUp 前寻式翻阅当前窗中的内容Esc 清楚当前行的全部内容PageDown后寻式翻阅当前窗中的内容2.2
6、 简单矩阵的输入在MATLAB 中矩阵输入的方法有多种此处只简单介绍矩阵的直接输入法详细介绍见第三章在MATLAB 中不必对矩阵维数做任何说明存储将自动配置在直接输入矩阵时矩阵元素用空格或逗号分隔矩阵行用隔离整个矩阵放在方括号 里例1A=1,2,3;4,5,6;7,8,9;10,11,12A =1 2 34 5 67 8 910 11 12说明指令执行后矩阵A 被保存在MATLAB 的工作间Workspace 中以备后用如果用户不用clear 指令清除它或对它重新定义该矩阵会一直保存在工作间中直到本MATLAB 指令窗被关闭为止例2矩阵分行输入A=1 2 3 45 6 7 80 1 2 3A
7、= 1 2 3 45 6 7 8南京航空航天大学 王正盛40 1 2 3例3矩阵元素输入B(1,2)=3;B(4,4)=6;B(4,2)=11B = 0 3 0 00 0 0 00 0 0 00 11 0 62.3 语句与变量MATLAB 采用表达式语句用户输入语句由MATLAB 系统结实运行MATLAB 语句有两种常见的形式1 表达式2 变量 =表达式说明1 表达式由算符函数变量名和数字构成2 在第一种形式中表达式被执行后产生的矩阵将被自动赋给名为ans 的变量并 显示在屏幕上ans 是一个缺省变量名它会被以后类似的操作刷新3 在第二种形式中等号右边的表达式是被演绎后产生的矩阵将被赋给等号左
8、边的变量存入内存并显示在屏幕上4 书写表达式时运算符号= + 以及*等两侧允许有空格以增加可读性但在复数或符号表达式中要尽量避免装饰性空格以防出错5 变量名函数名以一个字母打头后面最多可接19 个字母或数字注意MATLAB 是区分字母的大小写的例1 表达式的计算结果2001/81ans = 24.7037例2 运算结果的赋值s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8;说明结尾的分号作用是指令执行结果将不会显示在屏幕上但变量s 仍将驻留在内存中如想看s 的值只要键入ss = 0.63452.4 Who Whos 和永久变量Who 和Whos 这两个指令的作用都是列出在 MAT
9、LAB 工作间中已经驻留的变量名清单不过Whos 在给出变量名的同时还给出它们的维数及性质例1 用 who 检查内存变量whoYour variables are:s例2 用whos 检查驻留变量的详细情况whosName Size Bytes Classs 1x1 8 double arrayGrand total is 1 elements using 8 bytes南京航空航天大学 王正盛5在MATLAB 工作内存中还驻留几个由系统本身在启动时定义的变量如下表称为永久变量Permanent variables 或称为预定义变量Predefined variables系统预定义的变量eps
10、 计算机的最小正数在pc 机上它等于252pi 圆周率 的近似值3.14159265358979inf 或Inf 无穷大NaN 不定量i,j 虚数单位定义i = j = 1flops 浮点运算次数用于统计计算量说明1 它们是在MATLAB 启动时自定义的2 它们不会被清除内存变量指令clear 所清除3 他们可以重新定义为其他值但用clear 可清除重定义值恢复预定义值例1 无穷大s=1/0Warning: Divide by zero.s = Inf无穷大a=Inf/infa =NaN2.5 数与表达式MATLAB 的数值采用习惯的十进制表示可以带小数点或负号如下是合法的3 -99 0.00
11、13 9.2445154 1.2434e-6 4.673e33在采用IEEE 浮点算法的计算机上数值的相对精度是eps 即大约保持16 位有效数字数值范围大致为110308 110308表达式由下列算符构成并按习惯的优先次序进行运算+ 加法 减法 * 乘法 / 右除 左除 乘方注意设置两种除法是为了方便矩阵的运算对标量而言两者作用相同例1x=2*pi/3+23/5-0.3e-3x =3.69412.6 复数和复矩阵MATLAB 认识复数并定义i 和j 作为虚数单位矩阵元素允许是复数复变量和由它们组成的表达式南京航空航天大学 王正盛6例1z1=3+4*i,z2=2*exp(i*pi/6)z=z1
12、*z2z1 =3.0000 + 4.0000iz2 =1.7321 + 1.0000iz =1.1962 + 9.9282i例2A=1,3;2,4-i*5,8;6,9B=1+5*i,2+6*i;3+8*i,4+9*iC=A*BA =1.0000 - 5.0000i 3.0000 - 8.0000i2.0000 - 6.0000i 4.0000 - 9.0000iB =1.0000 + 5.0000i 2.0000 + 6.0000i3.0000 + 8.0000i 4.0000 + 9.0000iC =1.0e+002 *0.9900 1.1600 - 0.0900i1.1600 + 0.09
13、00i 1.37002.7 函数MATLAB 的强大功能可函数中略见一斑本质上讲分为三类1 内部函数2 系统附带各种工具包中的M 文件所提供的大量函数3 用户自己增加的函数这一特点是其他许多软件平台无法比拟的MATLAB 提供的通用数理类函数包括 基本数学函数 特殊函数 基本矩阵函数 特殊矩阵函数 矩阵分解和分析函数 数据分析函数 微分方程求解 多项式函数 非线性方程及其优化函数 数值积分函数 信号处理函数例z=1233.344x=sqrt(log(z)z =南京航空航天大学 王正盛71.233344000000000e+003x =2.667861401680282.8 显示格式在缺省的状态
14、下MATLAB 以短格式short 格式显示计算结果可以用MATLAB 命令窗口中format 指令来改变数字的显示格式由于 MATLAB以双精度执行所有运算显示格式的设置仅影响矩阵的显示不影响矩阵的计算与存储如果矩阵的所有元素都是整数则矩阵以不带小数点的格式显示如果有一个元素不是整数则有几种输出格式默认格式为short 格式只显示5 位有效数字其他的显示格式可显示更多的有效数字还可用科学表示法例x=4/3 1.2345e-6默认short 格式x =1.3333 0.0000format short e 短格式科学表示xx =1.3333e+000 1.2345e-006format lon
15、g 长格式xx =1.33333333333333 0.00000123450000format long e 长格式科学表示xx =1.333333333333333e+000 1.234500000000000e-006format bank 银行格式xx = 1.33 0.00format hex 十六进制格式xx = 3ff5555555555555 3eb4b6231abfd271format + +格式用于显示大矩阵的紧凑格式+ 空格分别表示正数负数和零xx =+另外还有一种命令为format compact(紧凑格式) 它消去了矩阵之间的间隔行这样可在一屏中显示更多的信息2.9
16、变量的存储与调用quit 和exit 指令都可退出MATLAB 结束MATLAB 任务会删除工作间中的变南京航空航天大学 王正盛8量在退出前可以保存工作空间以备再次调出使用这些变量保存的指令格式1 save 工作间中的所有变量保存在磁盘上名为 matlab.mat 的文件中2 save 文件名 变量名 将指定的变量保存在指定文件中如save temp x y z 把x,y,z 这三个变量保存在文件temp.mat 中在下次加载MATLAB 时可以利用load 指令将保存在文件中的变量恢复到工作间中其格式有1 load 将保存在matlab.mat 中的变量装入到MATLAB 工作间中2 loa
17、d 文件名 变量名 从指定的文件中将指定的变量装入MATLAB 工作间如load temp x 从文件temp.mat 中只将变量x 装入到MATLAB 工作间中2.10 图形图形是MATLAB 的主要特色之一MATLAB 图形指令具有自然简洁灵活及易扩充的特点MATLAB 的指令很多这里仅介绍几个简单的绘图指令详见第六章例1 作多条曲线t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,t,y0,t,-y0)grid0 2 4 6 8 10 12 14-1-0.8-0.6-0.4-0.200.20.40.60.81例2 三维曲
18、面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;mesh(Z);colormap(1,0,0)南京航空航天大学 王正盛92.11 lp 指令 lookfor 指令及其他帮助指令MATLAB 的在线帮助系统相当完备就查询系统的调用方式而言可分为两种1 从MATLAB 指令窗的 help 菜单选项中寻求帮助此与一般windows的求助方法一样2 在MATLAB 指令窗中直接键入求助指令(i)help 不带任何参数显示出MATLAB 的目录项产生清单信息helpHELP topics:
19、matlabgeneral - General purpose commands.matlabops - Operators and special characters.matlablang - Programming language constructs.matlabelmat - Elementary matrices and matrixmanipulation.matlabelfun - Elementary math functions.matlabspecfun - Specialized math functions.matlabmatfun - Matrix functio
20、ns - numerical linearalgebra.matlabdatafun - Data analysis and Fouriertransforms.matlabpolyfun - Interpolation and polynomials.matlabfunfun - Function functions and ODE solvers.matlabsparfun - Sparse matrices.matlabgraph2d - Two dimensional graphs.matlabgraph3d - Three dimensional graphs.matlabspecg
21、raph - Specialized graphs.matlabgraphics - Handle Graphics.matlabuitools - Graphical user interface tools.matlabstrfun - Character strings.matlabiofun - File input/output.matlabtimefun - Time and dates.matlabdatatypes - Data types and structures.matlabwinfun - Windows Operating System InterfaceFiles
22、 (DDE/ActiveX)matlabdemos - Examples and demonstrations.toolboxruntime - MATLAB Runtime Server DevelopmentKitrtwwindows - Real Time Windows Target.南京航空航天大学 王正盛10daqdaq - Data Acquisition Toolboxdaqdaqdemos - Data Acquisition Toolbox - DataAcquisition Demos.toolboxdials - Dials & Gauges Blocksettoolb
23、oxrptgenext - Simulink Report Generatortoolboxrptgen - MATLAB Report Generatordatabasedatabase - Database Toolbox.databasedbdemos - Database Toolbox DemonstrationFunctions.powersyspowerdemo - Power System Blockset Demos.powersyspowersys - Power System Blocksettoolboxcompiler - MATLAB Compiler (and C
24、ompiler1.2.1)commcomm - Communications Tmcommmasks - Communications Toolbox mask mcommsfun - Communications Toolbox S-mcommsim - Communications Toolbox Simulinkfiles.toolboxsymbolic - Symbolic Math Toolbox.nagnag - NAG Foundation Toolbox - Numerical &Statistical Librarynagexamples - NAG Foundation T
25、oolbox - Numerical& Statistical Librarymapmap - Mapping Toolboxmapmapdisp - Mapping Toolbox Map Definition andDisplay.mapmapproj - Mapping Toolbox Projections.waveletwavelet - Wavelet Toolbox.waveletwavedemo - Wavelet Toolbox Demos.toolboxpde - Partial Differential EquationToolbox.financefinance - F
26、inancial Toolbox.financecalendar - Financial Toolbox calendarfunctions.financefindemos - Financial Toolbox demonstrationfunctions.lmilmictrl - LMI Control Toolbox: ControlApplicationslmilmilab - LMI Control Toolboxqftqft - QFT Control Design Toolbox.qftqftdemos - QFT Control Design Toolbox Demostool
27、boxfixpoint - Fixed-Point Blocksetfixpointfxpdemos - Fixed-Point Blockset Demosfixpointobsolete - Obsolete Fixed-Point Blocksetdspblksdspblks - DSP Blockset.dspblksdspmex - (No table of contents file)dspblksdspdemos - DSP Blockset demonstrations andexamples.dspblksdspmasks - DSP Blockset mask helper
28、 functions.fuzzyfuzzy - Fuzzy Logic Toolbox.fuzzyfuzdemos - Fuzzy Logic Toolbox Demos.mpcmpccmds - Model Predictive Control Toolbox.mpcmpcdemos - Model Predictive Control Toolbox南京航空航天大学 王正盛11fdidentfdident - Frequency Domain IdentificationToolbox.fdidentfddemos - Demonstrations for the FDIDENTToolb
29、oxhosahosa - Higher-Order Spectral AnalysisToolbox.hosahosademo - Higher-Order Spectral AnalysisToolbox - Demo suitetoolboxstats - Statistics Toolbox.toolboxncd - Nonlinear Control Design Blocksetimagesimages - Image Processing Toolbox.imagesimdemos - Image Processing Toolbox - demosand sample imagesnnetnnet - Neural Network Toolbox.nnetnndemos - Neural Network Demonstrations.nnetnnutils - (No table of contents file)nnetnnobsolete - (No table of contents file)mutoolscommands - Mu-Analysis and Synthesis Toolbox.mutoolssubs - Mu-Analysis and Synthesis Toolbox.