1MATLAB编程基础之MATLAB基础介绍与变量梁丙臣2一、MATLAB的发展历程MATLAB-MATrixLABoratory20世纪七十年代后期:时任美国新墨西哥大学计算机科学系主任的CleveMoler教授用FORTRAN设计了一组程序接口,此即萌芽状态的MATLAB。1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。3主要版本1993年推出MATLAB4.0版本(1)推出了SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。(4)Notebook实现了MATLAB与Word的无缝连接。其升级版本MATLAB4.2c应用较广泛。1997年,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版,真正32位运算,功能强大,数值计算加快,拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。其中MATLAB5.3应用最广泛。2001年推出了MATLAB6.0,直到现在广泛使用的MATLAB6.5,其界面有较大的改观,计算速度有了比较大的改善,增加了与Java的接口。4二、MATLAB语言编程介绍MATLAB中各种命令可以完成许多单一的任务,对于某些较为复杂的问题,仅靠现有的命令或函数来解决,往往是难以达到目的。为此,要运用MATLAB编程语言编制程序,形成M-文件。程序是使计算机完成各项运算的命令集,运行一个编制好的程序,计算机会从第一条命令行开始,一行接一行地执行相应的命令,直到终止。程序一般包含:数据输入,数据处理和结果输出三部分,其中数据处理是核心。程序编写调试完成后,需要存盘,形成永久性文件,可以随时对它进行调用或修改。文件名以字母开头,但不能用专用变量名,如pi等。MATLAB中每一个命令都是一个M-文件。5MATLAB命令简单介绍MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。6MATLAB应用与网上资源工具箱信号处理、神经网络、鲁棒控制、系统辨识、控制系统、图形处理、模糊逻辑、小波分析、金融管理、概率统计、非线性控制等。网络资源安装软件要求Windows:Linux:Adobeacrobatreader8MATLAB命令窗口计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。9MATLAB程序执行方式立即执行»3.5*6.2ans=21.7000»»exp(j*3*pi/4)ans=-0.7071+0.7071i»10MATLAB程序执行方式立即执行x=-2*pi:0.1:2*piy=sin(x)plot(x,y,’r-d’)11通用命令cd显示或改变工作目录hold图形保持开关dir显示目录下的文件disp显示变量或文字内容type显示文件内容path显示搜索目录clear清理内存变量save保存内存变量到指定文件clf清除图形窗口load加载指定文件的变量pack收集内存碎片diary日志文件clc清除工作窗quit退出MATLABecho工作窗信息显示开关!调用dos命令12clearx%清除变量x,如果指令为clearx*,则为清除所有以x首字符的变量whoclear%清除所有的变量13命令行键盘技巧命令行键盘技巧调用上一行home光标置于当前行开头调用下一行end光标置于当前行末尾光标左移一个字符esc清除当前输入行光标右移一个字符del删除光标处的字符Ctrl+光标左移一个单词backspace删除光标前的字符Ctrl+光标右移一个单词alt+backspace恢复上一次的删除Ctrl+C终止正在运行的程序(运行内部函数和MEX文件除外)14y1=sqrt(10)*sin(0.6*pi)/(2+sqrt(7))%用“↑”调回上面输入的指令y2=sqrt(10)*cos(0.6*pi)/(2+sqrt(7))15标点:具有多种应用功能.小数点及域访问符;区分行,取消运行显示等…续行符,区分列,函数参数分隔符%注释标记()指定运算先后次序!调用操作系统运算[]矩阵定义标志=赋值标记{}用于构成单元数组‘字符串标示符16MATLAB搜索路径MATLAB的一切操作都是在其搜索路径中进行的,如果调用的函数在搜索路径之外,系统将认为该函数不存在。路径设置方法1、通过对话框设置在MATLAB主窗口菜单中【file】-【setPath】选项。2、path命令17MATLAB帮助MATLABHelp完善的HTML格式联机帮助系统,非常全面。使用方法:1.从help菜单中选取;2.在命令窗口中执行helpdesk或doc。PDF文档用Adobeacrobatreader阅读。18Lookfor根据用户提供的关键字搜索相关的函数。?lookfordiffSETDIFFSetdifference.DIFFDifferenceandapproximatederivative.POLYDERDifferentiatepolynomial.ODE113Solvenon-stiffdifferentialequations,variableordermethod.ODE15SSolvestiffdifferentialequations,variableordermethod.ODE23Solvenon-stiffdifferentialequations,lowordermethod.ODE23SSolvestiffdifferentialequations,lowordermethod.……19帮助机理Help命令显示相应M文件的注释区Lookfor命令搜索路径中每个M文件的第一行,扫描是否包含所要查询的字符串。?helpexa1Thisisanexample.20helpeye%显示eye函数帮助信息lookforinverse%搜索inverse显示结果21其他帮助命令Exist变量检验函数What目录中文件列表Who内存变量列表Whos内存变量详细信息Which确定文件位置22who%who查询的结果Whos%whos查询的结果%这里大家直接在命令窗中试一下指令23Matlab的数据类型变量变量不需要事先声明,也不需要指定变量类型,它会自动根据所赋予变量的值或对变量的操作来确定变量的类型;赋值过程中,如果变量已存在,则用新值代替旧值,以新的类型代替旧的类型。变量的命名规则:变量名区分大小写;变量名长度不超过63位,第63位之后的字符被忽略;变量名以英文字母开头,变量名中可以包含字母、数字、下划线,但不能使用标点。变量一般为局部变量,即仅在其调用的M文件内部有效;若要定义全局变量,须在变量前加关键字global。24常量matlab中预定义的一些特殊的量。i,j虚数单位Realmin最小的正浮点数,pi圆周率Realmax最大的浮点数,eps浮点运算的相对精度Inf无穷大NaNnotanumber,不定值例如:?pians=3.14161-10222-102325210-25矩阵输入;,空格等用法T=[123;456;789]T=[1,2,3;4,5,6;7,8,9]T=[123;456;…789]26?1/0Warning:Dividebyzero.ans=Inf?0/0Warning:Dividebyzero.ans=NaN27定义变量时应避免与常量名相同,如果改变了某个常量的值,可以用clear命令来恢复。?pi=1pi=1?clearpi?pians=3.141628变量名判断isvarname8th_column%变量名第一个字母为数字,不正确Ans=029MATLAB中基本代数运算符运算符号举例加法,a+b+5+3减法,a-b-5-3乘法,a×b*5*3除法,a÷b/or\48/4=4\48=12乘幂,ab^5^2=2530数字变量数字变量的运算?258*369ans=95202?x=258*369x=95202?123^3ans=1860867?sqrt(ans)ans=1.3641e+00331数字的输入输出格式缺省为实数保留小数点后4位浮点数表示。其输入格式与C语言一致:如:9-730.19991.475e6输出格式由format命令控制,只是影响屏幕显示效果,不影响内部存储和计算。?formatlong;pians=3.14159265358979?formatlonge;pians=3.141592653589793e+000?formatlongg;pians=3.1415926535897932MATLAB中数组、矩阵基本运算符运算符号举例加法,a+b+[12]+[34][1,2]+3减法,a-b-[12]-[34][1,2]-3乘法,a*b*[1,2]*3[1,2]‘*[3,4]a.*b.*[1,2].*[3,4]=[3,8]逆乘,左乘\ax=bx=a\b=inv(a)*b右乘/xa=bx=b’/a=b’*inv(a)乘幂,方阵的幂^a^2=a*a元素的幂.^a.^2x.^333变量及数组输入MATLAB的变量及数组均是以向量或矩阵方式存储的1:向量方式输入x=[1,2,3,4,5]%以向量(数组)方式给x赋值y=(x(3)+x(5))/2*x(4)%调用x中的元素z=sqrt(x)%每个元素开方t=x'%向量x的转置赋给tu=x*t%向量的内积(u为向量x的模的平方)34变量及数组输入2:矩阵方式输入a=[1,2,3;4,5,6;7,8,0]%矩阵输入(a为3阶方阵)b=[366;804;351]%列矩阵输入det(a)%方阵行列式inv(a)%方阵的逆x=a\b%ax=b方程组的解y=inv(a)*b%与x相同disp([a,b,x])%显示矩阵35绘图t=(1/16:1/8:1)'*2*pi;x=sin(t);y=cos(t);%八边形顶点subplot(211)fill(x,y,'m')%绘制添色多边形title'二维填充图示例'axisofftext(-0.75,0,'\fontname{隶书}\fontsize{32}八边形')%文字标注subplot(212)%创建4个三角形x=[0112;1122;0011];y=[1111;1010;0000];z=[1111;1010;0000];c=[0.50001.00001.00000.5000;1.00000.50000.50000.1667;0.33300.33300.50000.5000];%色图定义fill3(x,y,z,c)%绘制三维着色填充图title'三维填充图示例'36M-文件中输入、输出命令直接赋值输入:提示对话输入(input命令)x=2;x=input('请输入参数x=');a=[1,2;3,4];a=input('请输入矩阵a=');s='anystring!';s=input('Pleaseinputs=');