MATLAB语言发展简介•MATLAB语言的首创者CleveMoler教授在数值分析,特别是在数值线性代数的领域中很有影响,他参与编写了数值分析领域一些著名的著作和两个重要的Fortran程序EISPACK和LINPACK。他曾在密西根大学、斯坦福大学和新墨西哥大学任数学与计算机科学教授。1980年前后,当时的新墨西哥大学计算机系主任Moler教授在讲授线性代数课程时,发现了用其他高级语言编程极为不便,便构思并开发了MATLAB(MATrixLABoratory,即矩阵实验室),这一软件利用了当时数值线性代数领域最高水平的EISPACK和LINPACK两大软件包中可靠的子程序,用Fortran语言编写了集命令翻译、科学计算于一身的一套交互式软件系统。•所谓交互式语言,是指人们给出一条命令,立即就可以得出该命令的结果。该语言无需像C和Fortran语言那样,首先要求使用者去编写源程序,然后对之进行编译、连接,最终形成可执行文件。这无疑会给使用者带来了极大的方便。早期的MATLAB是用Fortran语言编写的,只能作矩阵运算;绘图也只能用极其原始的方法,即用星号描点的形式画图;内部函数也只提供了几十个。但即使其当时的功能十分简单,当它作为免费软件出现以来,还是吸引了大批的使用者。MATLAB语言发展简介(二)•CleveMoler和JohnLittle等人成立了一个名叫TheMathWorks的公司,CleveMoler一直任该公司的首席科学家。该公司于1984年推出了第一个MATLAB的商业版本。当时的MATLAB版本已经用C语言作了完全的改写,其后又增添了丰富多彩的图形图像处理、多媒体功能、符号运算和它与其他流行软件的接口功能,使得MATLAB的功能越来越强大。•TheMathWorks公司于1992年推出了具有划时代意义的MATLAB4.0版本,并于1993年推出了其微机版,可以配合MicrosoftWindows一起使用,使之应用范围越来越广。1994年推出的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面更提供了新的方法。•1997年推出的MATLAB5.0版允许了更多的数据结构,如单元数据、数据结构体、多维矩阵、对象与类等,使其成为一种更方便编程的语言。1999年初推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能。MATLAB语言发展简介(三)•2000年10月底推出了其全新的MATLAB6.0正式版(Release12),在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。•虽然MATLAB语言是计算数学专家倡导并开发的,但其普及和发展离不开自动控制领域学者的贡献。•甚至可以说,MATLAB语言是自动控制领域学者和工程技术人员捧红的,因为在MATLAB语言的发展进程中,许多有代表性的成就和控制界的要求与贡献是分不开的。迄今为止,大多数工具箱也都是控制方面的。MATLAB具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性,它在其他科学与工程领域的应用也是越来越广,并且有着更广阔的应用前景和无穷无尽的潜能。•目前,MATLAB已经成为国际上最流行的科学与工程计算的软件工具,现在的MATLAB已经不仅仅是一个“矩阵实验室”了,它已经成为了一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为“第四代”计算机语言,它在国内外高校和研究部门正扮演着重要的角色。MATLAB语言的功能也越来越强大,不断适应新的要求提出新的解决方法。可以预见,在科学运算、自动控制与科学绘图领域MATLAB语言将长期保持其独一无二的地位。MATLAB语言基础第一节使用MATLAB的窗口环境一、MATLAB语言的显著特点1、具有强大的矩阵运算能力:MatrixLaboratory(矩阵实验室),使得矩阵运算非常简单。2、是一种演算式语言•MATLAB的基本数据单元是既不需要指定维数,也不需要说明数据类型的矩阵(向量和标量为矩阵的特例),而且数学表达式和运算规则与通常的习惯相同。因此MATLAB语言编程简单,使用方便。例exp2_1.m二、MATLAB命令窗口1、启动MATLAB命令窗口•计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。•MATLAB语句形式》变量=表达式;通过等于符号将表达式的值赋予变量。当键入回车键时,该语句被执行。语句执行之后,窗口自动显示出语句执行的结果。如果希望结果不被显示,则只要在语句之后加上一个分号(;)即可。此时尽管结果没有显示,但它依然被赋值并在MATLAB工作空间中分配了内存。2、命令行编辑器(1)方向键和控制键可以编辑修改已输入的命令:回调上一行命令:回调下一行命令(2)命令窗口的分页输出•moreoff:不允许分页moreon:允许分页•more(n):指定每页输出的行数•回车前进一行,空格键显示下一页,q结束当前显示。(3)多行命令(…)•如果命令语句超过一行或者太长希望分行输入,则可以使用多行命令继续输入。•S=1-12+13+4+…9-4-18;三、变量和数值显示格式1、变量(1)变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。(2)一些特殊的变量ans:用于结果的缺省变量名i、j:虚数单位pi:圆周率nargin:函数的输入变量个数eps:计算机的最小数nargout:函数的输出变量个数inf:无穷大realmin:最小正实数realmax:最大正实数nan:不定量flops:浮点运算数(3)变量操作•在命令窗口中,同时存储着输入的命令和创建的所有变量值,它们可以在任何需要的时候被调用。如要察看变量a的值,只需要在命令窗口中输入变量的名称即可:》a2、数值显示格式•任何MATLAB的语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制。•format只是影响结果的显示,不影响其计算与存储;MATLAB总是以双字长浮点数(双精度)来执行所有的运算。•如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有:format(short):短格式(5位定点数)99.1253formatlong:长格式(15位定点数99.12345678900000formatshorte:短格式e方式9.9123e+001formatlonge:长格式e方式9.912345678900000e+001formatbank:2位十进制99.12formathex:十六进制格式四、简单的数学运算(例exp2_2.m)1、常用的数学运算符•+,—,*(乘),/(左除),\(右除),^(幂)•在运算式中,MATLAB通常不需要考虑空格;多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉MATLAB显示结果,而分号则禁止结果显示。2、常用数学函数abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real,sign,log,log10,conj(共扼复数)等五、MATLAB的工作空间1、MATLAB的工作空间包含了一组可以在命令窗口中调整(调用)的参数•who:显示当前工作空间中所有变量的一个简单列表•whos:则列出变量的大小、数据格式等详细信息•clear:清除工作空间中所有的变量•clear变量名:清除指定的变量2、保存和载入workspace(1)savefilenamevariables•将变量列表variables所列出的变量保存到磁盘文件filename中•Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔。•未列出variables时,表示将当前工作空间中所有变量都保持到磁盘文件中。•缺省的磁盘文件扩展名为“.mat”,可以使用“-”定义不同的存储格式(ASCII、V4等)(2)loadfilenamevariables•将以前用save命令保存的变量variables从磁盘文件中调入MATLAB工作空间。•用load命令调入的变量,其名称为用save命令保存时的名称,取值也一样。•Variables所表示的变量列表中,不能用逗号,各个不同的变量之间只能用空格来分隔。•未列出variables时,表示将磁盘文件中的所有变量都调入工作空间。3、退出工作空间•quit或exit六、文件管理•文件管理的命令,包括列文件名、显示或删除文件、显示或改变当前目录等。(what、dir、type、delete、cd、which)•what:显示当前目录下所有与matlab相关的文件及它们的路径。•dir:显示当前目录下所有的文件•which:显示某个文件的路径•cdpath:由当前目录进入path目录•cd..:返回上一级目录•cd:显示当前目录•typefilename:在命令窗口中显示文件filename•deletefilename:删除文件filename七、使用帮助1、help命令,在命令窗口中显示•MATLBA的所有函数都是以逻辑群组方式进行组织的,而MATLAB的目录结构就是以这些群组方式来编排的。•helpmatfun:矩阵函数-数值线性代数•helpgeneral:通用命令•helpgraphics:通用图形函数•helpelfun:基本的数学函数•helpelmat:基本矩阵和矩阵操作•helpdatafun:数据分析和傅立叶变换函数•helpops:操作符和特殊字符•helppolyfun:多项式和内插函数•helplang:语言结构和调试•helpstrfun:字符串函数•helpcontrol:控制系统工具箱函数2、helpwin:帮助窗口3、helpdesk:帮助桌面,浏览器模式4、lookfor命令:返回包含指定关键词的那些项5、demo:打开示例窗口•矩阵生成不但可以使用纯数字(含复数),也可以使用变量(或者说采用一个表达式)。矩阵的元素直接排列在方括号内,行与行之间用分号隔开,每行内的元素使用空格或逗号隔开。大的矩阵可以用分行输入,回车键代表分号。》y=[2,4,5368]y=245368一、矩阵的输入第二节MATLAB矩阵运算及多项式处理》a=1;b=2;c=3;》x=[5bc;a*ba+cc/b]x=5.0002.0003.0002.0004.0001.5001、在命令窗口中输入(1)用线性等间距生成向量矩阵(start:step:end)》a=[1:2:10]a=13579其中start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。2、语句生成(2)a=linspace(n1,n2,n)•在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。》a=linspace(1,10,10)a=12345678910(4)一些常用的特殊矩阵单位矩阵:eye(m,n);eye(m)零矩阵:zeros(m,n);zeros(m)一矩阵:ones(m,n);ones(m)对角矩阵:对角元素向量V=[a1,a2,…,an]A=diag(V)随机矩阵:rand(m,n)产生一个m×n的均匀分别的随机矩阵(3)a=logspace(n1,n2,n)•在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标提供了方便。》a=logspace(1,3,3)a=101001000》eye(2,3)ans=100010》zeros(2,3)ans=000000》ones(2,3)ans=111111》V=[572];A=diag(V)A=500070002》eye(2)ans=1001》zeros(2)ans=0000》ones(2)ans=1111如果已知A为方阵,则V=dia