1、MATLAB =MATrix +LABoratory 20世纪七十年代后期:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。n MATLAB作为一种编程语言和可视化工具,可作为一种编程语言和可视化工具,可解决解决工程工程、科学计算科学计算和和数学学科数学学科中许多问题中许多问题。n MATLAB建立在向量向量、数组数组和矩阵矩阵的基础上,使用方便,人机界面直观,输出结果可视化。n 矩阵矩阵是MATLAB的核心l 强大的强大的绘图、计算和统计绘图、计算和统计功能功能在
2、欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。n MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程工程、科学计算科学计算和数学学科数学学科中许多问题。n MAT
3、LAB建立在向量向量、数组数组和矩阵矩阵的基础上,使用方便,人机界面直观,输出结果可视化。n 矩阵矩阵是MATLAB的核心 Matlab程序的特点程序的特点 1,提供了一种全新的编程语言,其语法规则简单,很贴近人的思维方式。2,Matlab语言还直接提供了强有力的绘图指令。3,Matlab的运算功能很强,对化学计量学程序调试和编制有很大好处。4,Matlab语言在矩阵运算的方面,显得特别简捷、高效和方便。应用实例:应用实例:1 简单的计算器使用法简单的计算器使用法【例1-1】求的算术运算结果。(1)用键盘在MATLAB指令窗中输入以下内容(12+2*(7-4)/32 (2)在上述表达式输入完成
4、后,按【Enter】键,该就指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果。ans=2【例1-2】简单矩阵的输入步骤。(1)在键盘上输入下列内容A=1,2,3;4,5,6;7,8,9 (2)按【Enter】键,指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果:A=123456789【例1-3】矩阵的分行输入A=1,2,34,5,67,8,9 (以下是显示结果)A=123456789Matlab的基本运算符的基本运算符l(1)矩阵(算术)运算符A表示矩阵A的转置;A+B:表示矩阵A和B的和A*B:表示矩阵A和B的乘法A*B:表示矩阵A和B的对应元素相乘A.B
5、表示矩阵B的元素除以矩阵A的对应元素l(2)矩阵的创建 a)显示地输入一个元素序列;b)用Matlab的内部函数创建一个矩阵;c)在M文件中用Matlab语句创建一个矩阵;例:A=1 3 5 7;12 3 5 3;3 5 9 1 创建矩阵。求解代数方程AX=B问题。教科书的基本叙述:当行数等于列数(标量)时,X=A-1B;若行数大于列数满秩阵,X=(AA)-1AB;若列数大于行数时,有无数解。(A是非奇异矩阵),一般程序就必须按以上不同情况进行编程。然而对MATLAB来说,那只需一条简单指令:x=Ab。计算的快速性、准确性和稳定性是普通程序所远不及的。Matlab programu%This
6、is an example of solving linear equations!u%Using Matlab language.uE=1.5020 0.0514 0 0.0408u 0.0261 1.1516 0 0.0820u 0.0342 0.0355 2.532 0.2933u 0.0340 0.0684 0 0.3470 upauseuA=0.1013 0.09943 0.2194 0.03396 upauseuC=inv(E)*A or C=EA MATLAB入门入门一、变一、变 量量 与与 函函 数数二、数二、数 组组三、三、矩矩 阵阵四、四、MATLAB编程编程 1、变量、变
7、量 MATLAB中变量的命名规则命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过19个字符;(4)变量名必须以字母打头,之后可以是 任意字母、数字或下划线,变量名中 不允许使用标点符号.一、变一、变 量量 与与 函函 数数特殊变量取 值ans用于结果的缺省变量名pi圆周率eps计算机的最小数,当和 1 相加就产生一个比1大的数flops浮点运算数inf无穷大,如 1/0NaN不定量,如 0/0i,ji=j=1nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用正实数realmax最大可用正实数特殊变量表特殊变
8、量表2、数学运算符号及标点符号、数学运算符号及标点符号+加法运算,适用于两个数或两个同阶矩阵相加.减法运算*乘法运算.*点乘运算/除法运算./点除运算乘幂运算.点乘幂运算反斜杠表示左除.(1)MATLAB的每条命令后,若为逗号逗号或或无标点无标点符号,则显示命令的结果;若命令后为分号分号,则禁止显示结果.(2)“%”后面所有文字为注释.(3)“.”表示续行.函 数名 称函 数名 称sin(x)正弦函数asin(x)反正弦函数cos(x)余弦函数acos(x)反余弦函数tan(x)正切函数atan(x)反正切函数abs(x)绝对值max(x)最大值min(x)最小值sum(x)元素的总和sqrt
9、(x)开平方exp(x)以 e为底的指数log(x)自然对数)(log10 x以 10 为底的对数sign(x)符号函数fix(x)取整3、数学函数、数学函数 MATLAB的内部函数是有限的,有时为了研究某的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为一个函数的各种性态,需要为MATLAB定义新函数,定义新函数,为此必须编写函数文件为此必须编写函数文件.函数文件是文件名后缀为函数文件是文件名后缀为M的文件,这类文件的的文件,这类文件的第一行必须是一特殊字符第一行必须是一特殊字符function开始开始,格式为:,格式为:function 因变量名因变量名=函数名(自变量名)函数名
10、(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变函数值的获得必须通过具体的运算实现,并赋给因变量量.4、M文件文件M文件建立方法:文件建立方法:1.在在Matlab中,点中,点:File-New-M-file 2.在编辑窗口中输入程序内容在编辑窗口中输入程序内容 3.点:点:File-Save,存盘,存盘,M文件名必须文件名必须 与函数名一致。与函数名一致。Matlab的应用程序也以的应用程序也以M文件保存。文件保存。例:定义函数例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(
11、1)21.建立建立M文件:文件:fun.mMATLAB(fun)2.可以直接使用函数可以直接使用函数fun.m例如:计算例如:计算 f(1,2),只需在只需在Matlab命令窗口键入命令:命令窗口键入命令:x=1 2fun(x)返回返回x=logspace(first,last,n)创建从开始,到结束,有n个元素的对数分隔行向量.1、创建简单的数组、创建简单的数组二、数二、数 组组MATLAB(shuzu1)x=a b c d e f 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量x=first:increment:last 创建从fi
12、rst开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量 2、数组元素的访问数组元素的访问MATLAB(shuzu2)(3)直接使用元素编址序号直接使用元素编址序号.x(a b c d)表示提取数组x的第a、b、c、d个元素构成一个新的数组x(a)x(b)x(c)x(d).(2)访问一块元素访问一块元素:x(a:b:c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(1)访问一个元素访问一个元素:x(i)表示访问数组x的第i个元素.3
13、3、数组的方向、数组的方向 前面例子中的数组都是一行数列,是行方向分布的前面例子中的数组都是一行数列,是行方向分布的.称之为称之为行向量行向量.数组也可以是数组也可以是列向量列向量,它的数组操作和运,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:产生列向量有两种方法:直接产生直接产生 例例 c=1;2;3;4 转置产生转置产生 例例 b=1 2 3 4;c=b 说明:以说明:以空格空格或或逗号逗号分隔的元素指定的是不同列的分隔的元素指定的是不同列的元素,而以元素,而以分号分号分隔的元素指定了不同行的元素分
14、隔的元素指定了不同行的元素.4、数组的运算、数组的运算 (1)标量)标量-数组运算数组运算 数组对标量的加、减、乘、除、乘方是数组的每个数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算元素对该标量施加相应的加、减、乘、除、乘方运算.设:设:a=a1,a2,an,c=标量标量则:则:a+c=a1+c,a2+c,an+c a.*c=a1*c,a2*c,an*c a./c=a1/c,a2/c,an/c(右除)右除)a.c=c/a1,c/a2,c/an(左除)左除)a.c=a1c,a2c,anc c.a=ca1,ca2,can MATLAB(shuzu3)(2
15、)数组)数组-数组运算数组运算 当两个数组有相同维数时,加、减、乘、除、当两个数组有相同维数时,加、减、乘、除、幂运算可按幂运算可按元素对元素元素对元素方式进行的,不同大小或维方式进行的,不同大小或维数的数组是不能进行运算的数的数组是不能进行运算的.设:设:a=a1,a2,an,b=b1,b2,bn则:则:a+b=a1+b1,a2+b2,an+bn a.*b=a1*b1,a2*b2,an*bn a./b=a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbnMATLAB(shuzu4)返回返回2.控制指令:控制指令:who;whos
16、;clear【例2-1】用 who 检查MATLAB内存变量。在指令窗中运行以下指令,就可看到内存变量。who Yourvariablesare:RYxy1XZyy2 【例2-2】键入 whos,获得驻留变量的详细情况:全部变量名,变量的数组维数,占用字节数,变量的类别(如双精度)等。whos NameSizeBytesClassR33x338712doublearrayX33x338712doublearrayY33x338712doublearrayZ33x338712doublearrayx1x33264doublearrayy33x1264doublearrayy11x18double
17、arrayy21x18doublearrayGrandtotalis4424elementsusing35392bytes3.save 和和 load 指令指令说明 如果一组数据是经过长时间的复杂计算后获得的,那末为避免再次重复计算,常使用save 加以保存。此后,每当需要,都可通过 load重新获取这组数据。这种处理模式常在实际中被采用。(mkdir;cd;dir;save(mkdir;cd;dir;save;load);load)【例【例3-1】数据的存取。】数据的存取。(1)建立用户目录,并使之成为当前目录,保存数据)建立用户目录,并使之成为当前目录,保存数据mkdir(c:,my_di
18、r);%在在C盘上创建目录盘上创建目录my_dircd c:my_dir%使使c:my_dir成为当前目录成为当前目录save saf X Z%选择内存中的选择内存中的X,Z变量保存为变量保存为saf.mat文件文件dir%显示目录上的文件显示目录上的文件 .saf.mat (2)清空内存,从)清空内存,从saf.mat 向内存装载变量向内存装载变量Zclear%清除内存中的全部变量清除内存中的全部变量load saf Z%把把saf.mat文件中的文件中的Z变量装入内存变量装入内存who%检查内存中有什么变量检查内存中有什么变量 Your variables are:Z 4.Plot例4-1
19、 vector=linspace(0,8,100);values=2.vector;clf;plot(vector,values);Plot(vector,values,b-)例例4-2 绘制函数曲线。绘制函数曲线。x=0:0.1:1%定义自变量的采样点定义自变量的采样点取值数组取值数组y=x.*exp(-x)%利用数组运算计算各自变量采样点上的利用数组运算计算各自变量采样点上的函数值函数值plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x)%绘图绘图 例4-3 vector2=2:0.5:8;x,y=meshgrid(vector2)mesh(x,y
20、,2.x+2.y)surf(x,y,2.x+2.y)5、HELP demo;helpwindemo;helpwin;helpdesk;helpdesk 直接使用直接使用help获得指令的使用说明获得指令的使用说明【例4-1】假如准确知道所要求助的主题词,或指令名称,那末使用help 是获得在线帮助的最简单有效的途径。本例演示:关于矩阵对数函数 logm 使用说明的在线求助。help logm 使用使用help指令进行分类搜索指令进行分类搜索【例4-2】运行不带任何限定的help,可以得到分类名称明细表。help 三、三、矩矩 阵阵 逗号逗号或或空格空格用于分隔某一行的元素,用于分隔某一行的元素
21、,分号分号用于区分不用于区分不同的行同的行.除了分号,在输入矩阵时,按除了分号,在输入矩阵时,按Enter键也表示开始键也表示开始一新行一新行.输入矩阵时,严格要求所有行有相同的列输入矩阵时,严格要求所有行有相同的列.例例 m=1 2 3 4;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 31、矩阵的建立、矩阵的建立特殊矩阵特殊矩阵的建立:.MATLAB(matrix1)d=eye(m,n)产生一个产生一个m行、行、n列的单位矩阵列的单位矩阵c=ones(m,n)产生一个产生一个m行、行、n列的元素列的元素 全为全为1的矩阵的矩阵b=zeros(m,n)
22、产生一个产生一个m行、行、n列的零矩阵列的零矩阵a=产生一个空矩阵,当对一项操作无结产生一个空矩阵,当对一项操作无结 果时,返回空矩阵,空矩阵的大小为零果时,返回空矩阵,空矩阵的大小为零.2、矩阵中元素的操作、矩阵中元素的操作MATLAB(matrix2)(1)矩阵)矩阵A的第的第r行:行:A(r,:),:)(2)矩阵)矩阵A的第的第r列:列:A(:,(:,r)(4)取矩阵)取矩阵A的第的第i1i2行、第行、第j1j2列构成新矩阵列构成新矩阵:A(i1:i2,j1:j2)(5)以逆序提取矩阵)以逆序提取矩阵A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i2:-1:i1,:),:)(6)以
23、逆序提取矩阵)以逆序提取矩阵A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,j2:-1:j1)(7)删除)删除A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i1:i2,:,:)=(8)删除)删除A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,:,j1:j2)=(9)将矩阵)将矩阵A和和B拼接成新矩阵:拼接成新矩阵:A B;A;B(3)依次提取矩阵)依次提取矩阵A的每一列,将的每一列,将A拉伸为一个列向量:拉伸为一个列向量:A(:)(:)(2)矩阵)矩阵-矩阵运算矩阵运算 1 元素对元素元素对元素的运算,同数组的运算,同数组-数组运算。数组运算。3、矩阵的运算、矩阵的运算(
24、1)标量)标量-矩阵运算矩阵运算 同标量同标量-数组运算。数组运算。MATLAB(matrix3)2矩阵运算:矩阵运算:矩阵加法:矩阵加法:A+B矩阵乘法:矩阵乘法:A*B方阵的行列式:方阵的行列式:det(A)方阵的逆:方阵的逆:inv(A)方阵的特征值与特征向量:方阵的特征值与特征向量:V,D=eigA 返回返回关系与逻辑运算关系与逻辑运算 1、关系操作符、关系操作符关关系系操操作作符符说说明明小小于于大大于于=大大于于或或等等于于=等等于于=不不等等于于2、逻辑运算符逻辑运算符逻辑操作符逻辑操作符说明说明与与或或非非1、for循环:循环:允许一组命令以固定的和预定的次数重复允许一组命令以
25、固定的和预定的次数重复 for x=array commands end 在在for和和end语句之间的命令串语句之间的命令串commands按数组(按数组(array)中)中的每一列执行一次的每一列执行一次.在每一次迭代中,在每一次迭代中,x被指定为数组的下一列,即被指定为数组的下一列,即在第在第n次循环中,次循环中,x=array(:,:,n)控制流控制流MATLAB提供三种决策或控制流结构:提供三种决策或控制流结构:for循环、循环、while循环、循环、if-else-end结构结构.这些结构经常包含大量的这些结构经常包含大量的MATLAB命令,故经常出现在命令,故经常出现在MATLA
26、B程序中,而不是直接加在程序中,而不是直接加在MATLAB提示符下提示符下.例例 对对n=1,2,10,求求xn=的值的值10sinnMATLAB(for1)while expression commands end 只要在表达式只要在表达式(expression)里的所有元素为真,就执行里的所有元素为真,就执行while和和end语句之间的命令串语句之间的命令串commands.2、While循环循环 与与for循环以固定次数求一组命令相反,循环以固定次数求一组命令相反,while循环以不定的次循环以不定的次数求一组语句的值数求一组语句的值.MATLAB(while1)例例 设银行年利率为设
27、银行年利率为11.25%。将。将10000元钱存入银行,元钱存入银行,问多长时间会连本带利翻一番?问多长时间会连本带利翻一番?3、If-Else-End结构结构(1)有一个选择的一般形式是:)有一个选择的一般形式是:if expression commands end 如果在表达式如果在表达式(expression)里的所有元素为真,里的所有元素为真,就执行就执行if和和end语句之间的命令串语句之间的命令串commands.MATLAB(fun1)1(),2(,1211)(2ffxxxxxf求设例 先建立先建立M文件文件fun1.m定义函数定义函数f(x),再在),再在Matlab命令窗口输
28、入命令窗口输入fun1(2),fun1(-1)即可。即可。2)有三个或更多的选择的一般形式是:有三个或更多的选择的一般形式是:if (expression1)commands1 else if (expression2)commands2 else if (expression3)commands3 else if elsecommands endendend end)1(),5.0(),2(,0 x1x021x1xf(x)32fffxx求设例 先建立先建立M文件文件fun2.m定义函数定义函数f(x),再在),再在Matlab命令窗口输入命令窗口输入fun2(2),fun2(0.5),fun2(-1)即即可。可。MATLAB(fun2)返回返回四四.简单程序简单程序 m-file:data file(save,load)谢谢 谢!谢!