第2章matlab数值计算功能课件.ppt

上传人:牧羊曲112 文档编号:1487998 上传时间:2022-12-01 格式:PPT 页数:84 大小:1.01MB
返回 下载 相关 举报
第2章matlab数值计算功能课件.ppt_第1页
第1页 / 共84页
第2章matlab数值计算功能课件.ppt_第2页
第2页 / 共84页
第2章matlab数值计算功能课件.ppt_第3页
第3页 / 共84页
第2章matlab数值计算功能课件.ppt_第4页
第4页 / 共84页
第2章matlab数值计算功能课件.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《第2章matlab数值计算功能课件.ppt》由会员分享,可在线阅读,更多相关《第2章matlab数值计算功能课件.ppt(84页珍藏版)》请在三一办公上搜索。

1、2.1 变量及其赋值,2.1.1变量,3. MATLAB严格区分大小写字母,因此,A和a是不同的变量。,MATLAB的内定变量见表2 - 1,像任何其他计算机语言一样,MATLAB 也是使用变量来保存信息的。变量由变量名表示,变量的命名应遵循如下规则:,1变量名必须以字母开头;由字母、数字和下划线混合组成;不允许使用空格、标点符号;,2变量名的字符长度不应超过31个(对于6.x版本);,4关键字(如 if,while 等)不能作为变量名。,eps 容差变量,定义为1.0到最近浮点数的距离,在 pc机上= 2-52 pi 圆周率的近似值3.1415926 inf或Inf 表示正无大,定义为1/0

2、 NaN 非数,它产生于0 ,0/0,/ 等运算 i,j 虚数单位 ans 对于未赋值运算结果,自动赋给ans,永久变量,2.1.2、 MATLAB 的语句,1.百分号(注释符)%,与其它程序语言一样,为了方便其他人及日后自己对程序的阅读,增加程序的可读性,需要在MATLAB文件中加入注释。注释行必须以%号开始,执行文件时,%号后面的语句不予执行。,2.逗号和分号,在赋值语句中,逗号(空格)用在同一行中各元素之间,分号用在行与行之间。多条语句放在一行,用逗号分开表示要求显示结果,由分号分开表示不要求显示结果。,3.续行标志(),当一条语句或矩阵太长,一行显示不下时,可用续行标志,另起一行继续完

3、成该条语句的书写。,2.1.3 矩阵及其元素的赋值,矩阵是 MATLAB 进行数据处理的基本单元,MATLAB 的大部分运算都是在矩阵的意义上进行的,矩阵运算也是 MATLAB 最重要的运算。赋值就是把数赋予代表常量或变量的标识符。 MATLAB中的变量或常量都代表矩阵,标量应看作是11阶的矩阵。,矩阵的创建可以通过以下几种形式:(1)直接列出元素形式;(2)通过语句和函数产生;(3)从外部文件装入;(4)建立在M文件中。,1、直接输入矩阵:,例如输入语句a=1 2 3;4 5 6;7 8 9,a= 1 2 3 4 5 6 7 8 9,对于较小的简单矩阵,从键盘上直接输入矩阵时最常用、最方便和

4、最好的数值矩阵创建方法。创建矩阵的基本原则:矩阵的所有元素必须放在方括号“ ”内;矩阵元素之间必须用逗号“,”或空格隔开;矩阵行与行之间用分号“;”或回车符隔开;矩阵元素可以是数字或任何不含未定义变量的表达式。,矩阵里的元素也可以用表达式代替,例如输入,X=-1.3,sqrt(3),(1+2+3)/5*4,X= -1.3000 1.7321 4.8000,显示结果,矩阵里的元素还可以是复数,复数用内定变量i,j表示,2、由函数创建和修改矩阵:,MATLAB提供用于创建某些特殊矩阵的函数,A= 创建空矩阵,注意空矩阵与零矩阵的差别,eye(n) 单位矩阵, nn阶的方阵,zeros(m,n) 元

5、素全为零的mn阶矩阵,ones(m,n) 元素全为 1 的mn矩阵,rand(m,n) 元素为在0,1上均匀分布的mn随机矩阵,randn(m,n) 元素为标准正态分布的mn随机矩阵,magic(n) 魔方矩阵,其特点是元素由1到n2的自然数组成,每行、每列及两对角线上的元素之和均等于(n3+n)/2,以上命令可以只有一个参数,生成的是方阵,常用创建矩阵函数,3、从外部数据文件调入矩阵:,在MATLAB中,还可以从外部文件读入数据生成矩阵。这些文件可以是存储Matlab已经生成的矩阵二进制文件,也可以是包含数值数据的文本文件。在文本文件中,数据必须排成一个矩阵表,数据之间用用空格分隔,每行包含

6、矩阵的一行。保存文件时,文件名后缀为.dat,例如:有文本文件mydata.txt,将后缀改为.dat,在命令窗口输入:,load mydata.dat %把文件中的内容调入到工作空间中mydata %显示变量mydata,4、利用M文件中的函数生成矩阵,高维矩阵的创建(简单了解),1.通过全下标元素赋值方式, A=zeros(2,2)A = 0 0 0 0 A(2,2,2)=1A(:,:,1) = 0 0 0 0A(:,:,2) = 0 0 0 1, B(2,5,:)=1:3B(:,:,1) = 0 0 0 0 0 0 0 0 0 1B(:,:,2) = 0 0 0 0 0 0 0 0 0

7、2B(:,:,3) = 0 0 0 0 0 0 0 0 0 3,2.由若干个同样大小的低维数组合成, C=ones(2,3); C(:,:,2)=ones(2,3)*2; C(:,:,3)=ones(2,3)*3C(:,:,1) = 1 1 1 1 1 1C(:,:,2) = 2 2 2 2 2 2C(:,:,3) = 3 3 3 3 3 3,3. 由ones、zeros等函数直接创建,同样的方法还可以创建4维等更高维的数组。,2.1.4 向量的生成,在MATLAB中数组可以看成是行向量,即只有一行或一列的矩阵。前面介绍的所有矩阵的建立和保存的方法,对向量同样适用,这里不再重复。同时,介绍ma

8、tlab中创建向量的特殊命令。,1.利用冒号“:”创建等差数列:,t=初值:增量:终值,其中 “增量”是可以省略的,省略时,默认的增量步长为1。增量也可以是负值,但此时,初值应该大于终值。,例如:x=1:5; y=0:pi/4:2*pi; z=6:-1:0;,2.利用函数linspace和logspace创建向量:,linspace 函数,创建指定长度的等距向量,例:k=linspace(-pi,pi,4),t=linspace(初值d1,终值d2,点数n),logspace 函数,创建对数等距的向量,y=logspace(d1,d2) y=logspace(d1,d2,N),意义为:从10的

9、d1次幂到d2次幂之间按等比级数等分为N个点,N缺省时,默认为50。,意义为:在线性空间上,行矢量的值从d1到d2,数据个数n,缺省时n为100。,2.1.5 矩阵的下标,创建了矩阵之后,若要调用矩阵里的元素,就要了解单个元素标志和寻访的3种方式:,1.“全下标”标志,即指出“第几行第几列”的元素。优点是:几何概念清楚,引述简单。 “全下标”标志由行下标和列下标组成,例如:A(3,5)标志矩阵A的第3行第5列元素。,2.“单下标”标志,单下标是只用一个下标来指明元素在数组中的位置。matlab在存储矩阵时,将所有元素按一维进行编号,即把矩阵所有列,按照先左后右的次序排成一维长列,然后按照自上而

10、下对元素位置进行编号。,全下标和单下标的转换:,sub2ind(size(A),m,n) 将矩阵A的第m行第n列的下标转换成单下标;,a,b=ind2sub(size(A),p) 将矩阵A中编号为p的单下标转换成全下标;,3.“逻辑1”标志,在实际运用中,经常会碰到诸如寻找矩阵中所有大于某值的问题。此时“逻辑1”标志就特别得心应手。,X=A(L),其中L是与A维数相同的逻辑值数组,通过L中,逻辑1所在的位置,指示A元素的位置。,在MATLAB的内部数据储存结构中,每一个矩阵都是一个以列为主的向量,因此对于矩阵内各元素的存取是按列来进行总排。,冒号“:”表示“全部”。,例:,思考:A(3,1,4

11、,2)=?,A=-4,-2,0,2,4;-3,-1,1,3,5; %创建矩阵AL=abs(A)3 %建立矩阵Lislogical(L) %判断L中是否有逻辑1X=A(L) %指出A中绝对值大于3的元素,其它赋值方式,用户可以利用下标给某元素单独赋值。如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展,跳空的元素被自动赋值0。,这种自动扩展维数的功能只适用于赋值语句,A(2,3)=10A= -4 -2 0 2 4 -3 -1 10 3 5,A(3,3)=10A= -4 -2 0 2 4 -3 -1 1 3 5 0 0 10 0 0,给全行、全列赋值,可用冒号“:”,例:a(5,:)=5

12、,4,3;,把a的第2,4行及第1,3列交点上的元素取出,构成一个新的矩阵。,例:b=a(2,4,1,3);,利用空矩阵“ ”,可抽去a中的任意行,例:a(2,4,:)= ;,“空矩阵”是指没有元素的矩阵,不是零矩阵。对任何一个矩阵赋值 ,就是使它的元素都消失。,A=zeros(2,5); %创建25的零矩阵A(:)=-4:5 %修改矩阵给编号从110的元素分别赋值, 大小从-4按步长1一直增加到5 A= -4 -2 0 2 4 -3 -1 1 3 5,2.1.6 复数表示,MATLAB的每一个元素都可以是复数,实数是复数的特例。复数的虚部用i或j表示。,对复数有两种赋值方法:,1.将其元素逐

13、个赋予复数,2.将其实部和虚部矩阵分别赋值,如z=1,3;5,7+2,4;6,8*i (*号不能省略),如 z=1+2i,3+4i;5+6i,7+8i,若在前面程序中曾经给i或j赋过值,则i或j就不再是虚数单位,此时应把赋值的i或j清除再执行虚数赋值语句。,2.2 MATLAB的基本管理命令,2.2.1 save与load命令(变量的存储与下载),save filename a b c 把a、b、c三个变量保存在文件名为filename.mat的文件中。,利用save和load命令实现数据文件存取是所有MATLAB版本采用的基本操作方法。具体格式有:,save filename 把全部内存变量

14、保存为filename.mat文件。若文件名省略,默认文件名为matlab。,save filename a b c append 把a、b、c三个变量追加到文件名为filename.mat的文件中。,在MATLAB中,第二次再用save命令时,如果仍用默认文件名,则原来的数据就被冲掉,也可利用菜单保存变量,【File】Save Workspace As,菜单命令会打开一个标准的文件对话框,与windows操作基本一样,此时会保存工作空间里所有的变量,不能选择。,load是save的逆过程,它把磁盘上存储的mat数据取回到MATLAB的工作空间中。默认的文件名也是matlab.mat。在不用默

15、认文件时,命令格式与save相似。,loadLoading from: matlab.mat,当要提取文件中某些变量时,文件名不能省略。,例如:load A 提取文件matlab中的A变量,? Error using = loadUnable to read file A: No such file or directory.,2.2.2 clear命令(变量的删除),Matlab中内存变量的删除可以通过在指令窗口中运行clear来进行。clear操作通常有两种方式:,clear 清除当前工作空间中的全部变量,clear a b c 清除当前工作空间中的变量a、b、c,被清除的变量之间只能用空

16、格,不能用逗号或分号。因为在一条指令中,逗号和分号都表示该指令结束,不同的是逗号结束的指令要显示运算结果,而分号结束的指令不显示执行结果。,a=1;b=2;c=3;clear a,b;cc= 3bb= 2a? Undefined function or variable a.,例,用clear命令时,系统不会给出确认提示,一旦删除将不能恢复。,2.2.3 who和whos命令(变量信息的查询),在调试程序的时候,往往需要检查工作空间中的变量及其阶数。这时需要用到who和whos命令。who命令用于查看工作空间都有哪些变量名;whos命令用于了解变量的具体细节。调用方式:,who(whos) 查

17、看工作空间里所有的变量who(whos) a b 查看工作空间里的变量a和b,被查看的变量之间只能用空格,不能用逗号或分号。,当想给某一个变量赋值时,为了避免与已存在的变量同名,就要用exist查询当前的工作空间内是否存在该变量。调用格式:x=exist(A),永久变量用who指令是查看不到的,只可随时调用,例,a=1 2 3;4 5 6;b=2 5+8 9*i;c=23.5;whoYour variables are:a b c whos Name Size Bytes Class a 2x3 48 double array b 1x2 32 double array (complex) c

18、 1x1 8 double arrayGrand total is 9 elements using 88 bytes,2.2.4 format 命令(数据格式),format 命令用来控制数据显示格式。,format compact 数据显示紧凑格式,format loose 数据显示稀疏格式(系统默认),数字的显示格式有12种,见书第23页表2-3, format 命令只改变数字的显示格式,并不改变数字的大小。,2.3 matlab 的常用数学函数,matlab提供了几乎所有的初等数学函数,包括三角函数、对数函数、指数函数和复合运算函数等。函数的一般调用格式为:,函数名(变量),变量就是m

19、atlab的矩阵变量。函数的运算就是将函数运算分别作用于变量的每一个元素。,常用数学函数见书24页,表2-4,注意:1.MATLAB只对弧度操作,若为角度,则换成弧度。2.MATLAB系统提供的所有函数名都是小写字母。,2.4 矩阵与数组运算,Matlab有两类运算指令:矩阵算术运算和数组算术运算。矩阵运算操作是按照线性代数的运算法则定义的;数组运算操作是按元素逐个执行的。在matlab系统中提供了如下的矩阵运算:,矩阵加、减(,)运算,相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。,允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。,运算符+和可以作为一元运算符

20、使用。+A就是取A, A就是对A中的每个元素取负。,2.4.1 矩阵与数组的算术运算,2. 乘(、. )运算,A矩阵的列数必须等于B矩阵的行数,标量可与任何矩阵相乘。,矩阵乘()运算A*B,数组乘(.)运算A.*B,A,B两数组必须有相同的行和列,两数组相应元素相乘。,A=1 2 3;4 5 6;7 8 9;B=2 4 6;1 3 5;7 9 10;A.*B,3. 乘方(、.)运算,矩阵乘方()运算 Ap,矩阵A必须是方阵,A和p不能同时为矩阵;,当p取整数时,该指令的运算结果可以做如下的理解:,当p0时, Ap表示方阵A的直接自乘p次;,当p0时, Ap表示方阵A的逆矩阵直接自乘p次;,当p

21、=0时, Ap表示与方阵A同维的单位阵;,当p取非整数时,该指令的运算结果可以做如下的理解:,若A可以分解为A=WDW-1,D为对角阵,那么可定义,A-p=WD-pW-1,ans = 30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,a=1,2,3;4,5,6;7,8,9; a2,ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1

22、.9503 - 0.1611i 2.3134 + 0.2717i,a0.5,例,数组乘方(.)运算 A.B,数组A与数组B对应元素的乘方运算,A和B必须为同维矩阵。,B可以是标量,此时表示数组A中的每一个元素进行B次幂的运算。,例: a=1 2 3; b=4 5 6;,z=a.b,z=a.2,z = 1 4 9,z = 1.00 32 729,4. 除(,/)运算,矩阵的除运算在线性代数中没有,只有矩阵求逆的运算,在MATLAB中有两种矩阵除运算,规则:,左除:AB=A-1B,A为方阵 右除:A/B=AB-1,B为方阵,任何矩阵都可除以标量。,矩阵除(、/)运算,a./b=b.a 都是a的元素

23、被b的对应元素除(a除以b),例: a=1 2 3;b=4 5 6; c1=a.b, c2=b./ac1 = 4.0000 2.5000 2.0000c2 = 4.0000 2.5000 2.0000,a.b=b./a 都是b的元素被a的对应元素除( b除以a),数组除(.、./)运算,5. 转置(、.)运算,矩阵的共轭转置。在矩阵为复数矩阵时,求转置时首先对矩阵元素进行转置再逐项求取其共轭数值。,矩阵共轭转置()运算, a=1+2i 3-2ia = 1.0000 + 2.0000i 3.0000 - 2.0000i, aans = 1.0000 - 2.0000i 3.0000 + 2.00

24、00i,例,矩阵的转置。只是将排列形式进行转置。,矩阵转置(.)运算, a=1+2i 3-2ia = 1.0000 + 2.0000i 3.0000 - 2.0000i, a.ans = 1.0000 + 2.0000i 3.0000 - 2.0000i,例,对于实数矩阵用()符号或(.)求转置结果是一样的;,2.4.2 矩阵的关系运算,Matlab除了支持传统的数学运算外,还提供了比较完善的关系和逻辑运算。,关系运算,关系运算的基本规则,(1)两个标量之间相比,若两者关系成立,则运算结果为真(1);否则运算结果为假(0);,(2)标量可以和任何维数的数组进行比较,但是比较是在此标量和数组每一

25、个元素之间进行的,因此比较结果将与被比较数组同维;,(3)当比较量中没有标量时,关系符两端进行比较的数组必须同维,比较在两数组的对应元素间进行;,(4)运算符,=仅对参加比较的量的实部进行比较,而运算符=和= 则同时对它的实部和虚部进行比较;,(5)关系运算的优先级在算术运算和逻辑运算之间;,例, A=1 2 2;-1 2 1;3 5 2; B=3 4 6;5 8 9;4 5 3;, a=A3a = 0 0 0 0 0 0 0 1 0, b=(A=2)b = 1 0 0 1 0 1 1 1 0,c=(B4)-Ac = -1 -2 -1 2 -1 0 -3 -4 -2,为了增加程序的可读性,一般

26、将关系运算表达式用括号括起来。, d=(A=B)d = 0 0 0 0 0 0 0 1 0,例, A=1 2 2;-1 2 1;3 5 2; B=3 4 6;5 8 9;4 5 3;,=和=意味着两种不同的事情:=是比较两个变量,返回值为1或0;=是赋值运算,是将运算后的结果付给另一个变量。,2.4.3 矩阵的逻辑运算,Matlab提供了下述逻辑操作符来实现两个变量之间的逻辑比较:,&(与)、|(或)、(非),如果说上节介绍的只是“简单操作”,那么,逻辑操作符的引入,就让复杂关系运算成为了可能。,(1)在逻辑运算中,非零元素表示逻辑真,用“1”表示;零元素为逻辑假用“0”来表示;,操作符说明:

27、,(2)标量可以和任何维数的数组进行逻辑运算,运算是在此标量和数组每一个元素之间进行的,因此运算结果与参加运算的数组同维;,(3)当逻辑运算中没有标量时,参与运算的数组必须同维,运算在两数组的对应元素间进行;,(4)在三个运算符中“”的优先级最高,“&”次之,“|”的优先级最低。当然我们可以用括号人为的改变运算的优先级。,操作符说明:,例,A=5 -4 0 -0.5, B=0 1 0 9,A&Bans= 0 1 0 1 A&1ans= 1 1 0 1,A|Bans= 1 1 0 1A|1ans= 1 1 1 1,Aans= 0 0 1 0,关系函数和逻辑函数,除了逻辑运算符之外,MATLAB还

28、提供了方便的逻辑函数,与逻辑运算符一样,这些函数运算后会返回0或1,xor 异或运算函数,all 检查向量中的元素是否全为非零,只要有0,则返回0;全是非零元素时返回1,any 检查向量中是否有非零元素,只要有一个非零元素就返回1,全零时返回0。,isempty 矩阵为空时得1,isnan、isinf、issparse,1. 矩阵大小,size 命令,m,n=size(A,x):返回矩阵的行列数m与n,当x=1,则只返回行数m,当x=2,则只返回列数n。,length 命令,n=length(A):当A为数组时,返回数组的元素个数,当A为矩阵时,返回矩阵行数或列数的最大值。,length(A)

29、=max(size(A),2.4.4 矩阵的块操作,find 命令,m=find(A):向量A中非零元素的位置编号(单下标)组成数组返回m,m,n=find(A):返回矩阵中非零元素所在的行、列,a = 0 0 0 1 6 0 0 0 0,例, m,n=find(a)m = 2 2n = 1 2, find(a)ans = 2 5,i=find(a8);,a(i)=100a = 100 2 3 100 5 100 100 8 100 7 6 100 4 100 100 1,可以将A组合成其他形式的表达式,例:a=magic(4),a = 16 2 3 13 5 11 10 8 9 7 6 12

30、 4 14 15 1,max 命令,max(A) 返回向量A中值最大的元素;若A为矩阵,则返回A中每列元素的最大值;Y,Z=max(A) Y返回的是最大值,Z返回的是最大值所在的位;max(A,1) 寻找A中每列元素的最大值;max(A,2) 寻找A中每行元素的最大值;max(A,B) 返回A、B两个矩阵中相应元素的最大值构成的矩阵。,min 命令,mean 命令,mean(A) 返回向量A中元素的平均值;若A为矩阵,则返回A中每列元素的平均值;mean(A,1) 返回矩阵A中每列元素的平均值;mean(A,2) 返回矩阵A中每行元素的平均值;,sum 命令求向量或矩阵的和,std 命令求向量

31、或矩阵的标准方差,2. 矩阵的翻转,Matlab提供了几种可以实现矩阵的翻转及对角化操作的函数:,flipud(A) 命令 将矩阵A作上下翻转,fliplr(A) 命令 将矩阵A作左右翻转,rot90(A) 命令 将矩阵A作逆时针90旋转,例:A= 1 2 3 4 5 6,ans= 3 6 2 5 1 4,diag(A) 提取矩阵A的对角线元素,返回列向量。,当A是列(行)向量时,命令diag(A)将以列(行)向量为对角元素创建对角矩阵。,tril(A) 提取矩阵A的下三角矩阵。,triu(A) 提取矩阵A的上三角矩阵。,例,A=magic(3);diag(A)ans = 8 5 2, dia

32、g(ans)ans = 8 0 0 0 5 0 0 0 2,2.4.5 矩阵函数,MATLAB提供了很多用于求解线性代数数值问题的矩阵函数:,V,D=eig(A) 矩阵的特征相量与特征值,式中A为待求矩阵, D由特征值组成的对角线矩阵,V的列由对应的特征向量组成,d=eig(A),返回的是由矩阵A的所有特征值组成的向量,A=0 -6 -1;6 2 -16;-5 20 -10;d=eig(A),d = -3.0710 -2.4645 +17.6008i -2.4645 -17.6008i,det(A) 计算矩阵A的行列式的值,A必须为方阵。,rank(A) 求矩阵A的秩,inv(A) 计算矩阵A

33、的逆,A必须为方阵。,trace(A) 求矩阵A的对角线元素的和。,oly(A) 求矩阵A的特征多项式。,expm(A) 求矩阵A的指数。,logm(A) 求矩阵A的对数。,sqrtm(A) 求矩阵A的平方根。,2.4.6 稀疏矩阵,一般来说,稀疏矩阵的阶数都很高,但其中的非零元素又很少。若用一般的方法建立稀疏矩阵,不仅浪费时间,而且浪费计算机的资源。,格式: speye(n),例:speye(3) ans= (1,1) 1 (2,2) 1 (3,3) 1,用speye命令建立的3阶稀疏矩阵,占用53字节,而普通的方法建立的3阶单位矩阵,会占用72字节。阶数越高,节省的空间越多。,一、稀疏矩阵

34、的建立,speye命令 建立n阶单位稀疏矩阵,sparse(i,j,n)建立ij阶,最后一个元素为n的稀疏矩阵,sparse 命令,sparse(1:m,n,p) 建立mn阶稀疏矩阵,第n列元素为p,sparse(m,1:n, p) 建立mn阶稀疏矩阵,第m行元素为p,sparse(A) 将普通矩阵A转换成稀疏矩阵,full(A) 将稀疏矩阵转换成普通矩阵,当稀疏矩阵的阶数很高时,不能用full命令将其转化为普通矩阵,因为会占用太多的内存。,二、稀疏矩阵的操作函数,find 找出矩阵非零元素的下标,nonzeros 寻找矩阵的非零元素,find函数返回非零元素所在的行列,不显示元素的值;non

35、zeros函数返回由非零元素组成的列向量,不显示下标,sprandn(m,n,d) 随机产生服从正态分布的m n阶的稀疏矩阵,d为数据之间的分布密度参数,spy(A,标记形状颜色,标号大小 ) 显示稀疏矩阵的结构,spy函数无返回值,它将要显示结构的矩阵以图形的形式显示出来,nnz 寻找稀疏矩阵非零元素的个数,2.5 多项式运算(ployfun),可用行向量 p=an an-1 a1 a0表示,MATLAB语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。,2.5.1 多项式的表达与创建,所以,输入语句p=1 2 0 -5 6即表示创建多项式,oly(A) 由指定的根组成多项式

36、,当A是向量时,poly把它看作根来组成多项式,当A是方阵时,poly用它组成方阵的特征多项式。,例, A=1 2 1; p=poly(A)p = 1 -4 5 -2,a=1 2 3;4 5 6;7 8 0;p=poly(a)p =1.00 -6.00 -72.00 -27.00,1=poly2str(p,x) 显示数学多项式的形式,p1 =x3 - 6 x2 - 72 x - 27,2.roots 求多项式的根,r = 12.12 -5.73 -0.39,例:a=1 2 3;4 5 6;7 8 0; p=poly(a),p = 1.00 -6.00 -72.00 -27.00,r=roots

37、(p),当然我们可用poly令其返回多项式形式 p2=poly(r) p2 = 1.00 -6.00 -72.00 -27.00,matlab规定多项式系数向量用行向量表示,一组根用列向量表示,2.5.2 .多项式的四则运算,MATLAB规定只有长度相同的向量才能相加,因此,必须把短向量前面补以若干个零元素,才能用矩阵的加、减运算符。,例:a=1 2 -3 4; b=3 4;,p=a+0 0 b,p= 1 2 0 8,p=a-0 0 b,p= 1 2 -6 0,1.加法和减法,2.conv多项式乘运算,a=1 2 3;b=4 5 6;c=conv(a,b)=conv(1 2 3,4 5 6),

38、例:a(x)=x2+2x+3; b(x)=4x2+5x+6; c(x) = (x2+2x+3)(4x2+5x+6),c = 4.00 13.00 28.00 27.00 18.00,p=poly2str(c,x),p = 4 x4 + 13 x3 + 28 x2 + 27 x + 18,conv函数本来是卷积的意思,但它也符合多项式运算的规则,3.deconv 多项式除运算,a=1 2 3; c = 4.00 13.00 28.00 27.00 18.00;d=deconv(c,a)d =4.00 5.00 6.00,d,r=deconv(c,a),deconv函数是conv函数的逆运算。除法

39、不一定除得尽,会有余子式。,4. polyder 多项式微分,ans =4 x3 + 6 x2 + 6 x + 4,matlab提供了polyder函数进行多项式的微分。,命令格式:,olyder(p): 求p的微分,q=polyder(a,b): 求多项式a,b商的微分,olyder(a,b): 求多项式a,b乘积的微分,例:a=1 2 3 4 5; poly2str(a,x),ans = x4 + 2 x3 + 3 x2 + 4 x + 5,b=polyder(a),b = 4 6 6 4,poly2str(b,x),5. polyval 多项式赋值,当多项式中的自变量被赋值时,该多项式的

40、值可由polyval命令求得。,格式为:polyval(A,n),其中,A为由多项式系数组成的向量,n是自变量被赋予的值,也可以是复数、矩阵或数组。,例:a=1,2,3,4;,b=polyval(a,5) b= 194,b=polyval(a,1:5) b= 10 26 58 112 194,6. residue 部分分式展开,部分分式展开在系统传递函数的表示方面非常有用,其命令格式为:,r,p,k=residue(num,den),num和den分别表示分子和分母多项式的系数行向量,num,den=residue(r,p,k) 将部分分式展开项还原成多项式表达式,例:a=1 2 3 4; b

41、=3 6 8 1;,r,p,k=residue(a,b),r = -0.2780 + 0.1326i -0.2780 - 0.1326i 0.5560 p = -0.9308 + 1.2420i -0.9308 - 1.2420i -0.1384 k = 0.3333,r,p,k=residue(num,den),没有常数项,消除展开式中的复数项,7. polyfit 多项式拟合,已知m个横坐标点和m个与之相对应的纵坐标点,由此来确定多项式,称为多项式拟合。,格式为:polyfit(x,y,n),x,y是已知数据的横坐标和纵坐标向量,n为多项式次数,例,x=1 2 3 4 5;y=3.2 46

42、.7 138.3 278.6 467.2;p=polyfit(x,y,3)p = 0.0167 24.0571 -28.8595 8.0000,多项式拟合中阶数n越大,拟合的精度越高,8. interp1 一维多项式插值,在已知数据点之间,利用某种算法来估算出新的数据点,称为多项式插值。,格式为:yi=interp1(x,y, xi ,method),其中xi是插值范围内的任意点的横坐标,yi是插值后的对应数据点的纵坐标。Method为插值函数的类型选项,有linear(线性,默认项)、cubic(三次)和cubic spline(三次样条)三种。, x=1:10; y=5 8 9 13 27

43、 29 31 29 21 25; a=interp1(x,y,9.3)a = 22.2000,例,2.6 字符运算,MATLAB的程序和标识符都表示成字符串,每一个字符都对应一个ASCII码的数字。一个字符串就是由该字符串对应的数值组成的数组。可以对一串文字定义并对其进行处理与运算。,一、字符串的赋值,用单引号( )括起来的内容,MATLAB都当作字符来处理。,键入:x=this is a good book显示 x= this is a good book,size(x)= 1 19,查看字符串的大小,说明它是以行向量的形式存储的。,可以把几个字符串行向量串接,以构成更长的字符串,例如:y=

44、x, I like it,显示:y= this is a good book, I like it,可以把几个长度相同的字符串行沿列向并接,组成字符串矩阵,例如:y=book, girl; room, boy_,显示:y= bookgirl roomboy,可见,字符变量与数字变量的赋值方式是一样的。,可以利用char命令自动创建每行字符都相等的数组,abs(string ): 将字符串转换成对应的ASCII码,abs( )命令可以将字符串转换成英文大小写和十进制数字对应的ASCII码值。空格算一个字符。double( )命令与abs( )命令相同。,setstr( ):将ASCII码转换成对

45、应的字符串,setstr( ) 命令与abs( )命令互为逆变换。char( )命令与setstr( )命令相同,str2num( ):将字符串转换成数字,如果字符串里包含数字,则该命令可以将字符格式的数字转换为可以进行数学运算的数字。,二、字符串的转换,num2str ( ): 将数值变量转换为字符变量。,lower ( ): 将字符串变为小写。,upper ( ): 将字符串变为大写。,三、字符串的输入输出,disp (X ): 将字符型变量X的内容显示出来。 disp( ): 将引号里的内容显示出来。,sprintf ( ): 将数据按要求的格式转换为字符串。,sprintf( ) 命令

46、有返回值,将转换后的字符串赋给一个字符串变量。,例:键入sprintf(圆周率pi=%.5f,pi),显示:ans= 圆周率pi=3.14159,sscanf ( ): 按指定格式读入数据。,A=sscanf(s,format),从MATLAB字符串变量s中读入数据,按照format指定的格式转换,并将结果返回矩阵A。,例:s=2.7,3.1,5.8,8.2,3.4,6.1,A=sscanf(s,%f)A= 2.7 3.1 5.8 8.2 3.4 6.1,A=sscanf(s,%f,4)A= 2.7 3.1 5.8 8.2,四、字符串语句的执行,eval(magic_str),eval (expresstion ): 执行字符串所表示的表达式。,expresstion代表的是MATLAB表达式,用户可以通过在括号中连接子字符串和变量来构造expresstion。,例1:A=1+4;,A= 5,eval(A),例2:magic_str = M,int2str(3), = magic(3);,结果,M3= 8 1 6 3 5 7 4 9 2,结果,第二章 结束,电子信息技术之一,Matlab 语言基础,谢谢,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号