1.3MATLAB介绍(1)MATLAB代表MATrixLABoratory•它的首创者是美国新墨西哥大学计算机系的系主任CleveMoler博士,他在教授线性代数课程发现其他语言很不方便,便构思开发了MATLAB。最初采用FORTRAN语言编写,20世纪80年代后出现了MATLAB的第二版,全部采用C语言编写.•1984年Moler博士和一批数学家及软件专家创建了MathWorks公司,专门开发MATLAB。•1993年出现了微机版,到2003年是6.5版(2)一种演草纸式的科学计算语言.(3)MATLAB是一高性能的技术计算语言.–强大的数值计算和工程运算功能–符号计算功能–强大的科学数据可视化能力–多种工具箱MATLAB可以进行:数学计算、算法开发、数据采集建模、仿真、原型数据分析、开发和可视化科学和工程图形应用程序的开发,包括图形用户界面的创建。MATLAB广泛应用于:数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。MATLAB的构成:MATLAB开发环境:进行应用研究开发的交互式平台MATLAB数学与运算函数库:用于科学计算的函数MATLAB语言:进行应用开发的编程工具图形化开发:二维、三维图形开发的工具应用程序接口(API):用于与其他预言混编面向专门领域的工具箱:小波工具箱、神经网络工具箱、信号处理工具箱、图像处理工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同应用的工具箱。开发环境包括:命令窗口、图形窗口、编辑窗口、帮助窗口。命令窗口–可在提示符后输入交互式命令–结果会自动的产生–例如:MATLABprompt()andcursor(|)command(typedatprompt)MATLABoutput图形窗口在窗口中输入:Plot([1,2,4,9,16],[1,2,3,4,5])MATLAB画出如下图形:编辑窗口•用来创建和修改M-files(MATLAB脚本)帮助窗口MATLAB语言的特点–Matlab的基本数据单元是不需指定维数的矩阵。–Matlab的所有计算都是通过双精度进行的,在内存中的数都是双精度的。–double是一个双精度浮点数,每个存储的双精度数用64位。–char用于存储字符,每个存储的字符用16位。MATLAB程序构成程序M文件与m函数图形显示流程控制其它输出函数语句变量各种运算符常变量及其命名规则•变量名可以有数字、字母、下划线构成;•变量的首字符必须是字母;•区分变量名的大小写•每个变量名最长只能包含19个字符。MATLAB中预定义变量Ans分配最新计算表达式的值,这个表达式并没有给定一个名字Eps返回机器精度Realmax返回计算机能处理的最大浮点数Realmin返回计算机能处理的最小的非零浮点数Pi,3.14159265Inf定义为1/0。当出现被零除时,Matlab就返回inf,并不中断执行而继续计算NaN定义为“NotaNumber”,这个非数值要么是%类型,要么是inf/inf向量的创建在matlab的命令窗口键入以下字符a=[123456987]a=123456987希望得到元素从0到20,步距为2的一个向量,只需键入以下命令即可t=[0:2:20]t=2468101214161820矩阵的创建输入矩阵时每一行元素有分号或者回车键分隔。例如:B=[1234;5678;9101112]B=123456789101112各种运算符语句Matlab语言最基本的赋值语句结构为:变量名列表=表达式注1:整个赋值语句以;结束,则不在屏幕上返回结果,否则立即返回结果。注2:多个语句可在同一行,用逗号分开。注3:表达式太长可以用续行符号…函数Matlab由包括许多标准函数,每个函数都完成某一特定功能的代码组成。Matlab也允许用户编写自己所需的函数,其扩展名为.m,其中必须以关键字function开头.流程控制循环语句for,while条件转移ifend,ifelseifelseend开关语句switchcase注释语句%中断语句break暂停语句pause回显语句echoon/off1、for循环语句基本格式for循环变量=起始值:步长:终止值循环体end步长缺省值为1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套使用。fori=1:5forj=1:5a(i,j)=1/(i+j-1);endenda=1.00000.50000.33330.25000.20000.50000.33330.25000.20000.16670.33330.25000.20000.16670.14290.25000.20000.16670.14290.12500.20000.16670.14290.12500.11112、while循环语句基本格式while表达式循环体end•若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。用while循环语句编写一个计算1000以内的Fibonacci数:f=[11];i=1;whilef(i)+f(i+1)1000f(i+2)=f(i)+f(i+1);i=i+1;endf=11235813213455891442333776109873、if,else,elseif语句(1)if逻辑表达式执行语句end(2)if逻辑表达式(3)if逻辑表达式1执行语句1执行语句1elseelseif逻辑表达式2执行语句2执行语句2end…end4、switch语句switch表达式(可以是标量或字符串)case值1语句1case值2语句2….otherwise语句3endMATLAB程序的基本组成结构%说明清除命令:清除workspace中的变量和图形(clear,close)定义变量:包括全局变量的声明及参数值的设定逐行执行命令:指MATLAB提供的运算指令或工具箱………提供的专用命令控制循环:包含for,ifthen,switch,while等语句逐行执行命令………end绘图命令:将运算结果绘制出来当然更复杂程序还需要调用子程序,或与simulink以及其他应用程序结合起来。MATLAB的程序类型有三种,一种是在命令窗口下执行的脚本M文件;另外一种是可以存取的M文件,也即程序文件;最后一种是函数(function)文件。1、脚本M文件在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出MATLAB后就释放了。2、程序M文件以.m格式进行存取,包含一连串的MATLAB指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,没有输入参数,也不会返回参数。程序运行时只需在工作空间中键入其名称即可。3、函数文件与在命令窗口中输入命令一样,函数接受输入参数,然后执行并输出结果。用help命令可以显示它的注释说明。具有标准的基本结构。(1)函数定义行(关键字function)function[out1,out2,..]=filename(in1,in2,..)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。(2)第一行帮助行,即H1行以(%)开头,作为lookfor指令搜索的行(3)函数体说明及有关注解以(%)开头,用以说明函数的作用及有关内容(4)函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。MATLAB提供了丰富的绘图功能helpgraph2d可得到所有画二维图形的命令helpgraph3d可得到所有画三维图形的命令1、基本的绘图命令plot(x1,y1,option1,x2,y2,option2,…)x1,y1给出的数据分别为x,y轴坐标值,option1为选项参数,以逐点连折线的方式绘制1个二维图形;同时类似地绘制第二个二维图形。这是plot命令的完全格式,在实际应用中可以根据需要进行简化。比如:plot(x,y);plot(x,y,option)选项参数option定义了图形曲线的颜色、线型及标示符号,它由一对单引号括起来。2、选择图像figure(1);figure(2);…;figure(n)打开不同的图形窗口,以便绘制不同的图形。3、gridon:在所画出的图形坐标中加入栅格gridoff:除去图形坐标中的栅格4、holdon:把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。holdoff:使新图覆盖旧的图形5、设定轴的范围axis([xminxmaxyminymax])axis(‘equal’):将x坐标轴和y坐标轴的单位刻度大小调整为一样。6、文字标示text(x,y,’字符串’)在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串。title(‘字符串’)在所画图形的最上端显示说明该图形标题的字符串。xlabel(‘字符串’),ylabel(‘字符串’)设置x,y坐标轴的名称。输入特殊的文字需要用反斜杠(\)开头。7、legend(‘字符串1’,‘字符串2’,…,‘字符串n’)在屏幕上开启一个小视窗,然后依据绘图命令的先后次序,用对应的字符串区分图形上的线。8、subplot(m,n,k):分割图形显示窗口m:上下分割个数,n:左右分割个数,k:子图编号9、semilogx:绘制以x轴为对数坐标(以10为底),y轴为线性坐标的半对数坐标图形。semilogy:绘制以y轴为对数坐标(以10为底),x轴为线性坐标的半对数坐标图形。10、了解应用型绘图指令:可用于数值统计分析或离散数据处理bar(x,y);hist(y,x)stairs(x,y);stem(x,y)三维的绘图命令基本与二维的相同,稍有差别,不再详述。绘图实例函数分析矩阵运算线性方程组曲线拟合微分方程绘图实例fplot('func',[-11.5])%作图result=func(0)%求函数值xsolve=fzero('func',3)%求解Xmin=fminbnd('func',0.5,1)%求最小值函数分析矩阵运算A=[123;456;789];B=[123;456];C=[101;023;450];A+C=A+CBA=B*AdetA=det(A)traceA=trace(A)BT=B'invA=inv(A)rankA=rank(A)[EigenVectors,EigenValues]=eig(A)A=[31-1;124;-145];b=[3.6;2.1;-1.4];X=A\b[EigenVectors,EigenValues]=eig(A)线性方程组与特征值%一次多项是拟合%已知离散点x=[11.534566.578];y=[1.211.72.522.32.533.1];%最小二乘拟合p1=polyfit(x,y,1);y1=polyval(p1,x);plot(x,y1);holdonplot(x,y,'ro')gridon•%7次多项是拟合•%已知离散点•x=[11.534566.578];•y=[1.211.72.522.32.533.1];•%最小二乘拟合•p7=polyfit(x,y,7);•xi=1:0.25:8;•yi=polyval(p7,xi);•plot(x,y,'*r',xi,yi);•gridon曲线拟合Vande