MATLAB语言概述cha.ppt

上传人:牧羊曲112 文档编号:6512145 上传时间:2023-11-08 格式:PPT 页数:46 大小:313KB
返回 下载 相关 举报
MATLAB语言概述cha.ppt_第1页
第1页 / 共46页
MATLAB语言概述cha.ppt_第2页
第2页 / 共46页
MATLAB语言概述cha.ppt_第3页
第3页 / 共46页
MATLAB语言概述cha.ppt_第4页
第4页 / 共46页
MATLAB语言概述cha.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《MATLAB语言概述cha.ppt》由会员分享,可在线阅读,更多相关《MATLAB语言概述cha.ppt(46页珍藏版)》请在三一办公上搜索。

1、矩阵、M文件的运用、逻辑运算、多项式运算,例 分别建立33、32和与矩阵A同样大小的零矩阵。(1)建立一个33零矩阵。zeros(3)(2)建立一个32零矩阵。zeros(3,2)(3)设A为23矩阵,则可以用zeros(size(A)建立一个与矩阵A同样大小零矩阵。A=1 2 3;4 5 6;%产生一个23阶矩阵Azeros(size(A)%产生一个与矩阵A同样大小的零矩阵,ROT90(A,K)is the K*90 degree rotation of A,K=+-1,+-2,.,对角矩阵,符号 X=diag(v,k):when v is a vector of n components,

2、returns a square matrix X of order n+abs(k),with the elements of v on the kth diagonal.k=0 represents the main diagonal,k 0 above the main diagonal,and k 0 below the main diagonal.,K=0,K0,K0,K=0,K=0,K=0,K0,K=0,K0,K0,K=0,例:v=1 2 3;x=diag(v,1);y=diag(v);z=diag(v,-1);,v=diag(X,k)for matrix X,returns a

3、column vector v formed from the elements of the kth diagonal of X.,x=1 2 3;4 5 6;7 8 9;v=diag(x,1);w=diag(x,0);u=diag(x,-1);,x=1 2 3 10;4 5 6 11;7 8 9 12;v=diag(x,1);w=diag(x,0);u=diag(x,-1);,例 先建立55矩阵A,然后将A的第一行元素乘以1,第二行乘以2,第五行乘以5。A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19;D=

4、diag(1:5);D*A%用D左乘A,对A的每行乘以一个指定常数,三角阵三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。,(1)上三角矩阵求矩阵A的上三角阵的MATLAB函数是triu(A)。triu(A)函数也有另一种形式triu(A,k),其功能是求矩阵A的第k条对角线以上的元素。例如,提取矩阵A的第2条对角线以上的元素,形成新的矩阵B。(2)下三角矩阵在MATLAB中,提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k),其用法与提取上三角矩阵的函数triu(A)和triu(A,k

5、)完全相同。,用于专门学科的特殊矩阵(1)魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。,例 将101125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。M=100+magic(5),范得蒙矩阵范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基

6、础向量的范得蒙矩阵。例如,A=vander(1;2;3;5)即可得到上述范得蒙矩阵。,伴随矩阵MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了求多项式的x3-7x+6的伴随矩阵,可使用命令:p=1,0,-7,6;compan(p),二、在MATLAB中.m文件分为两种:函数(Function),函数接受用户的输入参数,执行函数的具体运算,最后输出结果。1.脚本文件:包括注解和指令两部分。注解部分必须以“”开头。脚本文件使用与存放的变量和数据都在工作空间中,指向工作空间来操作。例:假设当前目录下有一个命令M文件:%sol

7、ver.m%used to solve A*x=b%where A=-1.5 1 2;3-1 1;-1 3 5,b=2.5;5;8.A=-1.5 1 2;3-1 1;-1 3 5;b=2.5;5;8;x=Ab在命令窗口中执行solver命令,即可得到方程组的解。x=0.7500-0.62502.1250在命令窗口中键入type solver.m即可在命令窗口中看到该文件。2.函数文件:该文件主要包含以下五部分,(1)函数定义行:位于函数的第一行,格式为:function A1,A2,A3,=函数名(B1,B2,B3,)A1,A2,A3,为输出参数,B1,B2,B3,为输入参数如无输入或输出参数

8、,可以不写相应的参数。例如:function tide(x1)function y1,y2=tide()注:函数文件的名称必须与函数名称或函数文件中的主函数名称相同。(2)H1行:H1行紧接着函数定义行简要说明函数名和功能,是帮助文本的第一行,以“”开始。lookfor function-name 命令找到相关函数,但只显示H1行,(3)函数说明:函数说明位于H1行后,用来具体说明函数的功能和用法,同样以“”开头。Help direction-name 就可显示该目录下所有函数的H1行(4)函数主体:函数主体在函数说明后,是所有进行具体运算和赋值程序的代码。(5)注解:在MATLAB中,还可以

9、对某一行的具体内容进行注解。注:MATLAB通过判断.m文件的第一行是否有关键字“function”来识别该文件是否为函数文件。如果一个m文件是脚本文件,那么在该文件中不允许再出现函数定义语句。但可以调用在同一工作空间的函数文件中定义的函数,例:Matlab的应用程序也以M文件保存。定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)21.建立M文件:fun.mfunction f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)22.可以直接使用函数fun.m例如:计算 f(1,2),只需在Matlab命令窗口键入命令:x=1 2fun(x),三、变量和数据操

10、作,变量与赋值1变量命名在MATLAB 中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,变量名区分字母的大小写。,2赋值语句(1)变量=表达式;(2)表达式;其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。,例1 计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)其中pi和i都是MATLAB预先定义的变量,分别代表代表圆周率和虚数单位。输出结果是:z=-0.3488+0.3286i,预定义变量,在MA

11、TLAB工作空间中,还驻留几个由系统本身定义的变量。例如,用pi表示圆周率的近似值,用i,j表示虚数单位。预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。,关系运算 MATLAB提供了6种关系运算符:(大于)、=(大于或等于)、=(等于)、=(不等于)。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。,关系运算符的运算法则为:(1)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。(2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个

12、维数与原矩阵相同的矩阵,它的元素由0或1组成。,(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。,例 产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除。(1)生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2)判断A的元素是否可以被3整除。P=rem(A,3)=0其中,rem(A,3)是矩阵A的每个元素除以3的余数矩阵。此时,0被扩展为与A同维数的零矩阵,P是进行等于(=)比较的结果矩阵。

13、,逻辑运算 MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。逻辑运算的运算法则为:(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2)设参与逻辑运算的是两个标量a和b,那么,a&b a,b全为非零时,运算结果为1,否则为0。a|b a,b中只要有一个非零,运算结果为1。a 当a是零时,运算结果为1;当a非零时,运算结果为0。,(3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。(4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按

14、标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。,(5)逻辑非是单目运算符,也服从矩阵运算规则。(6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。,例 建立矩阵A,然后找出大于4的元素的位置。(1)建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0(2)找出大于4的元素的位置。find(A4),Matlab符号计算基础创建符号变量和符号矩阵函数sym的调用格式为:符号变量名=sym(表达式)说明:函数sym可创建一个符号变量,表达式可以是字符、字符串、数学表达式或字符表达式等。函数syms的调用格式:syms 符号变量名1 符

15、号变量名2 符号变量名3 说明:函数syms可一次创建多个符号变量。,创建符号变量。a=sym(matlab)运行结果:a=matlab b=sym(3*x2+4*x+7)运行结果:b=3*x2+4*x+7,例创建符号矩阵。e=1 3 5;2 4 6;7 9 11;%建立数值矩阵 m=sym(e)%创建符号矩阵运行结果:m=1,3,5 2,4,6 7,9,11,符号表达式的基本运算函数例 计算表达式x3-1与表达式x-1的和、差、积、商和乘方。syms x s1=x3-1;s2=x-1;symadd(s1,s2)运行结果:ans=x3-2+x symsub(s1,s2)运行结果:ans=x3-

16、x symmul(s1,s2),运行结果:ans=(x3-1)*(x-1)symdiv(s1,s2)运行结果:ans=(x3-1)/(x-1)sympow(s1,s2)运行结果:ans=(x3-1)(x-1),符号表达式的化简函数符号数学工具箱提供了符号表达式的因式分解、展开、合并、化简、通分等数例对表达式 进行因式分解。syms x%在命令窗口创建符号变量x f=factor(x3-1)运行结果:f=(x-1)*(x2+x+1),例 展开三角表达式sin(a+b)。s=sym(sin(a+b);%用sym函数创建符号变量 expand(s)运行结果:ans=sin(a)*cos(b)+cos

17、(a)*sin(b)例1.11化简分式(4x2+8x+3)/(2x+1)。syms x s=(4*x2+8*x+3)/(2*x+1);simplify(s)运行结果:ans=2*x+3,多项式的运算,多项式的表示方法及其运算,MATLAB中,无论是一个多项式,还是它的根,都是向量,MATLAB规定,多项式是行向量,根是列向量.例如,多项式p(x)=x3-3x+5可以表示成p=1 0-3 5.给定一个多项式的根,也可以构造相应的多项式.在MATLAB中,函数poly(r)执行这个任务.,求多项式p=1 0-3 5在x=5时的值p(5),可以用函数polyval(p,5).其中第一个参数是多项式的

18、系数向量,第二个是自变量的取值(可以是矩阵).,函数polyvalm(p,X)的第二个参数是方阵,求以矩阵为自变量的多项式的值.,函数roots(p)可以找一个多项式的根.,例5.改变自变量时多项式的取值及求多项式的根.,p=1 0-3 5p=1 0-3 5result=polyval(p,5)%自变量为数result=115,A=9 1;6 8;2 7;c=polyval(p,A)%自变量为矩阵c=707 3 203 493 7 327,A=9 1;6 8;c=polyvalm(p,A)%自变量为方阵c=863 220 1320 643,p=1 0-3 5;r=roots(p)r=-2.27

19、90 1.1395+0.9463i,常见的多项式函数,函数conv支持多项式乘法,例6.求a(x)=x3+2x2+3x+4和b(x)=x3+4x2+9x+16的乘积.,a=1 2 3 4;b=1 4 9 16c=conv(a,b)c=1 6 20 50 75 84 64,多项式的加法,d=a+bd=2 6 12 20,结果是d(x)=2x3+6x2+12x+20,e=c+0 0 0 de=1 6 20 52 81 96 84,低阶多项式用首零填补,使其与高阶多项式有相同的阶数,多项式的求导函数polyder,由函数deconv完成,格式为g,r=deconv(c,b)表示c除以b,给出商多项式

20、g和余数r,若r=0,则cbg.,g,r=deconv(c,b)g=1 2 3 4r=0 0 0 0 0 0 0,例7.用例6中的多项式b和c,求它们的商.,一个多项式除以另一个多项式,例8.对于一个新的多项式g求导,g=1 6 20 48 69 72 44,g=1 6 20 48 69 72 44h=polyder(g)h=6 30 80 144 138 72,求函数的极值和零点,求解一元函数的取小值,可以通过函数fminbnd来求一元函数y=f(x)在指定区间a,b上的函数局部极小值,该函数返回函数在极小值点时自变量x的值,调用格式为:x=fminbnd(fun,a,b).,例9.求hum

21、ps函数在开区间(0.3,1)内的最小值.humps是MATLAB内置的M文件函数,实际上是y=1/(x-0.3)2+0.01)+1/(x-0.9)2+0.04)-6.,x=fminbnd(humps,0.3,1)x=0.6370,f=inline(sin(x)+3);%用内联函数表达x=fminbnd(f,2,5)x=4.7124,求解多元函数的取小值,函数fminsearch用于求多元函数在向量x0附近的最小值.它指定一个开始的向量(x0),并非指定一个区间.此函数返回一个向量,为此多元函数局部最小函数值对应的自变量的取值,调用格式为x=fminsearch(fun,x0),例10.把一个

22、3个自变量的函数创建在一个M文件里.,%three.mfunction b=three(v)x=v(1);y=v(2);z=v(3);b=x*x+2.5*sin(y)-z*z*x*y*y;,求这个函数在1,-1,0点附近的最小值可以得到:,v=1-1 0;fminsearch(three,v)ans=-0.0000-1.5708 0.0008,也可以简单输入如下:,f=x(1)2+2.5*sin(x(2)-x(3)2*x(1)*x(2)2x=fminsearch(f,1-1 0),f=eval(f)x=-0.0000-1.5708 0.0008%函数的最小值点f=-2.5000%函数的最小值,求函数的零点,在MATLAB中使用fzero可以找到函数零点,调用格式为x=fzero(fun,x0),寻找零点可以指定一个开始的位置,或者指定一个区间.,例11.仍然考虑humps函数,把1,2作为函数的参数,命令及结果为,fzero(humps,1 2)ans=1.2995,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号