第2章基本运算精.ppt
第2章基本运算1第1页,本讲稿共75页2.1数据类型数据类型MATLAB 定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户可以定义自己的数据类型。任何类型的数据均按数组的形式进行存储和运算。2第2页,本讲稿共75页2.1.1常数和变量常数和变量1.常数:采用十进制表示,可用带小数点的形式直接表示或用科学计数法表示。2.变量MATLAB的变量命名规则如下:变量名区分字母的大小写。例如,“a”和“A”是不同的变量。变量名不能超过63个字符,第63个字符后的字符被忽略。变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。关键字(如if、while等)不能作为变量名。练习练习3第3页,本讲稿共75页赋值语句赋值语句(1)变量=表达式 (2)表达式其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。预定义的特殊变量预定义的特殊变量 在MATLAB工作空间中,还驻留几个由系统本身定义的变量。例如,用pi表示圆周率的近似值,用i,j表示虚数单位。预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。4第4页,本讲稿共75页特殊变量取 值ans用于结果的缺省变量名pi圆周率eps计算机的最小数,当和1相加就产生一个比1大的数flops浮点运算数inf无穷大,如1/0NaN不定量,如0/0i,ji=j=1-nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用正实数realmax最大可用正实数特殊变量表特殊变量表5第5页,本讲稿共75页例例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.3286i6第6页,本讲稿共75页练习a=5+3ib=2+4jc=2*pid=2/02*d1/d7第7页,本讲稿共75页2.1.2整数和浮点数整数和浮点数1.整数练习练习8第8页,本讲稿共75页2.浮点数数据类型存储空间表示范围类型转换函数单精度型single4字节3.402821038+3.402821038single()双精度型double8字节1.7976910308+1.7976910308double()9第9页,本讲稿共75页2.1.3 复数复数Matlab 把复数作为一个整体处理(而不必像其他程序语言,将实部和虚部分开处理)。虚数单位用预定义变量i或j表示。复数z=a+bi 直角坐标表示和极坐标表示之间转换的matlab指令如下:Real(z)给出复数z的实部 Imag(z)给出复数z的虚部Abs(z)给出复数z的模Angle(z)给出复数z的相角10第10页,本讲稿共75页2.2 数组数组空数组(empty array):没有元素的数组;标量(scalar):是指11的矩阵,即为只含一个数的矩阵;向量(vector):是指1n或n1的矩阵,即只有一行或者一列的矩阵;矩阵(matrix):是一个矩形的mn数组,即二维数组;数组(array):是指多维数组mnk,其中矩阵和向量都是数组的特例。11第11页,本讲稿共75页2.2.1 2.2.1 创建简单的数组创建简单的数组x=a b c d e f 创建包含指定元素的行向量创建包含指定元素的行向量x=first:last 创建从创建从first开始,加开始,加1计数,到计数,到last结束的行向量结束的行向量x=first:increment:last 创建从创建从first开始,加开始,加increment计数,计数,last结束的行向量结束的行向量x=linspace(first,last,n)创建从创建从first开始,到开始,到last结束,有结束,有n个元素的行向量个元素的行向量 y=1:7y=1 2 3 4 5 6 712第12页,本讲稿共75页例如:z=3:2:9z=3 5 7 9 v=y,zv=1 2 3 4 5 6 7 3 5 7 9 u=linspace(2,9,11)u=Columns 1 through 6 2.0000 2.7000 3.4000 4.1000 4.8000 5.5000 Columns 7 through 11 6.2000 6.9000 7.6000 8.3000 9.000013第13页,本讲稿共75页2.2.2 2.2.2 对数组元素的访问对数组元素的访问(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个元素个元素.例如:例如:x=1:2:9x=1 3 5 7 9 y=x(2:1:5)y=3 5 7 9 z=x(1 3 5)z=1 5 914第14页,本讲稿共75页 前面例子中的数组都是一行数列,是行方向分布的前面例子中的数组都是一行数列,是行方向分布的.称之为称之为行行向量向量.数组也可以是数组也可以是列向量列向量,它的数组操作和运算与行向量是一样的,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示唯一的区别是结果以列形式显示.产生列向量有两种方法:产生列向量有两种方法:直接产生直接产生 例例 c=1;2;3;4 转置产生转置产生 例例 b=1 2 3 4;c=b 说明说明:以:以空格空格或或逗号逗号分隔的元素指定的是不同列的元素,而以分隔的元素指定的是不同列的元素,而以分号分号分隔的元素指定了不同行的元素分隔的元素指定了不同行的元素.2.2.3 2.2.3 数组的方向数组的方向15第15页,本讲稿共75页2.2.4 2.2.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 16第16页,本讲稿共75页(2)数组)数组-数组运算数组运算 当两个数组有相同维数时,加、减、乘、除、幂运算可按当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素对元素元素方式进行的,不同大小或维数的数组是不能进行运算的方式进行的,不同大小或维数的数组是不能进行运算的.设:设: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,anbn17第17页,本讲稿共75页例2-14 使用数组算术运算法则进行向量的运算。t=0:pi/3:2*pi;%t为行向量 x=sin(t)*cos(t)?Error using=mtimesInner matrix dimensions must agree.x=sin(t).*cos(t)x=0 0.4330 -0.4330 -0.0000 0.4330 -0.4330 -0.0000 y=sin(t)./cos(t)y=0 1.7321 -1.7321 -0.0000 1.7321 -1.7321 -0.000018第18页,本讲稿共75页2.2.5 数组元素的删除数组元素的删除 在MATLAB中可以对数组中的单个元素、子矩阵和所有元素进行删除操作,删除就是将其赋值为空矩阵(用表示)。19第19页,本讲稿共75页2.3 2.3 矩矩 阵阵 逗号逗号或或空格空格用于分隔某一行的元素,用于分隔某一行的元素,分号分号用于区分不同的用于区分不同的行行.除了分号,在输入矩阵时,按除了分号,在输入矩阵时,按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 32.3.1 矩阵的建立矩阵的建立20第20页,本讲稿共75页特殊矩阵特殊矩阵的建立:d=eye(m,n)产生一个产生一个m行、行、n列的单位矩阵列的单位矩阵c=ones(m,n)产生一个产生一个m行、行、n列的元素全为列的元素全为1的矩阵的矩阵b=zeros(m,n)产生一个产生一个m行、行、n列的零矩阵列的零矩阵a=产生一个空矩阵,当对一项操作无结果时,产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零返回空矩阵,空矩阵的大小为零.21第21页,本讲稿共75页2.3.2 矩阵中元素的操作矩阵中元素的操作(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)以逆序提取矩阵)以逆序提取矩阵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(:)(:)22第22页,本讲稿共75页 (2)矩阵)矩阵-矩阵运算矩阵运算 a a)元素对元素的运算)元素对元素的运算:与数组-数组运算相同.*./.2.3.3 矩阵的运算矩阵的运算(1 1)标量)标量-矩阵运算矩阵运算 与标量-数组运算规则相同。b)矩阵对矩阵运算:矩阵对矩阵运算:矩阵加减法:A+B A-B 矩阵乘法:A*B 矩阵除法:矩阵左除:AX AX=B B,求 X X。MATLAB 求解:X X=ABAB若A为非奇异方阵,则 X=A-1B最小二乘解(若A不是方阵)矩阵右除:XA XA=B B,求 X X。MATLAB求解:X X=B/AB/A若A为非奇异方阵,则 X=BA-1最小二乘解(若A不是方阵)23第23页,本讲稿共75页例2-12 用矩阵除法求方程组的解,已知方程组:解:X=AB是方程A*X=B的解,将该方程变换成A*X=B的形式。其中:A=2-3 1;1-1 1;1 3 1;B=8;7;6;X=AB练习练习24第24页,本讲稿共75页2.3.4 矩阵分析矩阵分析 2.3.4.1 对角阵与三角阵对角阵与三角阵1对角阵对角阵只有对角线上有非只有对角线上有非0元素的矩阵称为元素的矩阵称为对角对角矩阵矩阵,对角线上的元素相等的对角矩阵,对角线上的元素相等的对角矩阵称为称为数量矩阵数量矩阵,对角线上的元素都为,对角线上的元素都为1的的对角矩阵称为对角矩阵称为单位矩阵单位矩阵。25第25页,本讲稿共75页(1)提取矩阵的对角线元素提取矩阵的对角线元素设设A为为mn矩阵,矩阵,diag(A)函数用于提取矩阵函数用于提取矩阵A主对角主对角线元素,产生一个具有线元素,产生一个具有min(m,n)个元素的列向量。个元素的列向量。diag(A)函数还有一种形式函数还有一种形式diag(A,k),其功能是提取,其功能是提取第第k条对角线的元素。条对角线的元素。(2)构造对角矩阵构造对角矩阵设设V为具有为具有m个元素的向量,个元素的向量,diag(V)将产生一个将产生一个mm对角矩阵,其主对角线元素即为向量对角矩阵,其主对角线元素即为向量V的元的元素。素。diag(V)函数也有另一种形式函数也有另一种形式diag(V,k),其功能是产,其功能是产生一个生一个nn(n=m+k)对角阵,其第对角阵,其第k条对角线的元素即条对角线的元素即为向量为向量V的元素。的元素。26第26页,本讲稿共75页例例2-10 先建立先建立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=diag(1:5);D*A%用用D左乘左乘A,对,对A的每行的每行 乘以一个指定常数乘以一个指定常数27第27页,本讲稿共75页2三角阵三角阵三角阵又进一步分为上三角阵和下三角三角阵又进一步分为上三角阵和下三角阵,所谓阵,所谓上三角阵上三角阵,即矩阵的对角线以,即矩阵的对角线以下的元素全为下的元素全为0的一种矩阵,而的一种矩阵,而下三角阵下三角阵则是对角线以上的元素全为则是对角线以上的元素全为0的一种矩阵的一种矩阵。28第28页,本讲稿共75页(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)完全相同。完全相同。29第29页,本讲稿共75页2.3.4.2 矩阵的转置与旋转矩阵的转置与旋转1矩阵的转置矩阵的转置转置运算符是转置运算符是单撇号单撇号()。2矩阵的旋转矩阵的旋转利用函数利用函数rot90(A,k)将矩阵将矩阵A旋转旋转90的的k倍,当倍,当k为为1时可省略。时可省略。30第30页,本讲稿共75页3矩阵的左右翻转矩阵的左右翻转对矩阵实施左右翻转是将原矩阵的第一对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列和最后一列调换,第二列和倒数第二列调换,列调换,依次类推。,依次类推。MATLAB对矩对矩阵阵A实施左右翻转的函数是实施左右翻转的函数是fliplr(A)4矩阵的上下翻转矩阵的上下翻转MATLAB对矩阵对矩阵A实施上下翻转的函数实施上下翻转的函数是是flipud(A)。31第31页,本讲稿共75页2.3.4.3 矩阵的逆矩阵的逆对于一个方阵对于一个方阵A,如果存在一个与其同阶的方阵,如果存在一个与其同阶的方阵B,使得:使得:AB=BA=I(I为单位矩阵为单位矩阵)则称则称B为为A的逆矩阵,当然,的逆矩阵,当然,A也是也是B的逆矩阵。的逆矩阵。求一个矩阵的逆是一件非常烦琐的工作,容易出求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在错,但在MATLAB中,求一个矩阵的逆非常容易。求中,求一个矩阵的逆非常容易。求方阵方阵A的逆矩阵可调用函数的逆矩阵可调用函数inv(A)。例例2-11 用求逆矩阵的方法解线性方程组用求逆矩阵的方法解线性方程组。Ax=b其解为:其解为:x=A-1b32第32页,本讲稿共75页2.3.4.4 方阵的行列式方阵的行列式把一个方阵看作一个行列式,并对其按把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵行列式的规则求值,这个值就称为矩阵所对应的所对应的行列式的值行列式的值。在。在MATLAB中,中,求方阵求方阵A所对应的行列式的值的函数是所对应的行列式的值的函数是det(A)。33第33页,本讲稿共75页2.3.4.5 矩阵的秩与迹矩阵的秩与迹1矩阵的秩矩阵的秩矩阵线性无关的行数与列数称为矩阵线性无关的行数与列数称为矩阵的矩阵的秩秩。在。在MATLAB中,求矩阵秩的函数是中,求矩阵秩的函数是rank(A)。2矩阵的迹矩阵的迹矩阵的迹等于矩阵的对角线元素之和矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是中,求矩阵的迹的函数是trace(A)。34第34页,本讲稿共75页2.3.4.6 矩阵的合并矩阵的合并矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“”符号可以作为矩阵合并操作符,命令格式如下:c=a b%将矩阵a和b水平方向合并为cc=a;b%将矩阵a和b垂直方向合并为c35第35页,本讲稿共75页2.4 字符串2.4.1 创建字符串字符串由多个字符组成,是1n的字符数组;每一个字符都是字符数组的一个元素,以ASCII码的形式存放并区分大小,而显示的形式则是可读的字符。1.创建字符串 s1=matlab 7.3s1=matlab 7.3 s2=字符串字符串s2=字符串字符串36第36页,本讲稿共75页(1)直接赋值用单引号()括起字符来直接赋值创建字符串。使用两个单引号()输入字符串中的单引号 s3=显示matlabs3=显示matlab(2)多个字符串组合 str2=s1;s2,;s3str2=matlab 7.3字符串 显示matlab 2.字符数组的存储空间MATLAB在存储字符串时,每一个字符以ASCII码的形式存放,占用两个字节。练习练习37第37页,本讲稿共75页2.4.2 字符串函数字符串函数1.字符串合并strcat函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语法格式如下:strcat(s1,s2,)%将s1,s2合并成一个长字符串char(s1,s2,)%将s1,s2合并成一个字符矩阵strvcat(s1,s2,)%将s1,s2合并成一个字符矩阵38第38页,本讲稿共75页2.字符串与数值的转换abs将字符串转换为ASCII码数值str2num将字符串转换为数值3.字符串的其他操作MATLAB 7.3还可以对字符串进行比较、查找、运行等操作,其函数见书57页表2-13。39第39页,本讲稿共75页例2-19 使用字符串函数进行运算。str=a+b,c+d,str=a+b,c+d,n=findstr(str,)%查找字符串中,的位置n=4 8 str1=str(1:n(1)%取第一个,前的字符串str1=a+b,str1=str(n(1)+1:n(2)%取第二个,前的字符串str1=c+d,练习练习40第40页,本讲稿共75页2.5 日期和时间 2.5.1日期时间的表示格式MATLAB 没有专门的日期时间类型,以三种格式表示:日期字符串、连续的日期数值和日期向量,不同的日期格式可以相互转换。1.日期格式(1)日期字符串日期字符串是最常用的,有多种输出格式。例,“2007年1月1日”可以表示为:01-Jan-2007 08:50:10、01-Jan-2007、01/01/2007、等。(2)连续的日期数值 表示当前时间到起始时间的距离。(起始时间为公元元年1月1日)(3)日期向量 year month day hour minute second 41第41页,本讲稿共75页2.4.2 日期时间函数日期时间函数1.获取系统时间date:按照日期字符串格式获取当前系统时间;now:按照连续的日期数值格式获取当前系统时间;clock:按照日期向量格式获取当前系统时间。2.提取日期时间信息分别使用year、month、day、hour、minute、second函数。3.日期时间的显示格式日期时间的显示可以使用datestr函数显示为字符串的样式。datestr函数的格式如下:datestr(d,f)%将日期按指定格式显示42第42页,本讲稿共75页例2-21 实用日期函数按指定格式显示日期时间。y=num2str(year(now)y=2009 m=num2str(month(now)m=2 d=num2str(day(now)d=27 s=今天是,y,年,m,月,d,日,datestr(now,HH:MM:SS PM)s=今天是2009年2月27日 3:48:49 PM43第43页,本讲稿共75页4.计时函数(1)cputime方法cputime是返回MATLAB启动以来的CPU时间:程序执行的时间程序代码执行结束后的cputime在程序代码执行前的cputime(2)tic/toc方法tic在程序代码开始用于启动的一个计时器;toc放在程序代码的最后,用于终止计时器的运行,并返回计时时间就是程序运行时间。(3)etime方法etime方法使用etime函数来获得程序运行时间,etime函数的命令格式如下:etime(t1,t0)%返回t1-t0的值44第44页,本讲稿共75页2.7关系运算和逻辑运算关系运算和逻辑运算2.7.1 逻辑运算逻辑运算MATLAB 中逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态,逻辑型变量只占1个字节。函数logical可以用来将数值型转换为逻辑型,任何非零的数值都转换为逻辑1,数值0转换为逻辑0。45第45页,本讲稿共75页2.7.2 关系运算MATLAB 常用的关系操作符有、=、=(等于)、=(不等于)。关系运算规则:如果比较的两个变量都是标量,则结果为1(true)或0(false);如果比较的两个变量都是数组,则必须尺寸大小相同,结果也是同样大小的数组;如果比较的是一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组。46第46页,本讲稿共75页2.7.3 逻辑运算1.元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、(非)和xor(异或)。在逻辑运算中,非0元素表示true,0元素表示false。2.先决逻辑运算先决逻辑运算符有:&(先决与):A&B|(先决或):A|B47第47页,本讲稿共75页比较两个语句的不同:x=0 y=(x=0)&(100/x10)x=0 y=(x=0)&(100/x10)3.位逻辑运算位逻辑运算函数有:bitand(位与)、bitor(位或)、bitcmp(位非)和bitxor(位异或)。练习练习48第48页,本讲稿共75页2.7.4 运算符优先级各类运算符的优先级为:括号算术运算符关系运算符逻辑运算符各符号优先顺序为:括号()转置.幂.一元加减+-逻辑非 乘*.*除/./.加减+-冒号:关系运算=pi)&(xpi&x m,n=size(a)m=2n=3 l=numel(a)l=6 mean=sum(a(:)/lmean=6.545851第51页,本讲稿共75页2.数组的检测函数以“is”开头,函数返回的结果为逻辑型,如果检测符合条件则返回1,不符合条件就返回0。例 利用数组检测函数获取数组信息。a=0 1 2 3 4 5 isempty(a)ans=052第52页,本讲稿共75页2.9 多项式多项式一个多项式按降幂排列为:p(x)=anxn+an-1xn-1+a1x+a0在MATLAB中用行向量来表示多项式的各项系数,使用长度为n+1的行向量按降幂排列,用0表示多项式中某次幂的缺项,则表示为:p=an an-1 a1 a0例如,p(x)=x3-4x2+3x+1可表示为p=1-4 3 1;p(x)=x2+5x+2x 可表示为p=1 5 2 0。53第53页,本讲稿共75页2.9.1 多项式求根和求值多项式求根和求值1.多项式求根使用roots函数来计算多项式的根,多项式的根以列向量的形式表示;反过来,也可以根据多项式的根使用poly函数获得多项式。2.多项式求值函数polyval和polyvalm可以用来计算多项式在给定变量时的值。54第54页,本讲稿共75页例 计算多项式的根并由根得出多项式。p1=1-6 11-6 0 p1=1 -6 11 -6 0 r1=roots(p1)r1=0 3.0000 2.0000 1.0000 p2=poly(r1(2)r1(3)p2=1.0000 -5.0000 6.0000 多项式:p1=x4-6x3+11x2-6x=x(x-3)(x-2)(x-1)p2=x2-5x+655第55页,本讲稿共75页例 计算多项式的值。polyvalm(p1,5)ans=120 x=1 2;3 4x=1 2 3 4 polyvalm(p1,x)ans=48 64 96 144多项式:p1=x4-6x3+11x2-6x=x(x-3)(x-2)(x-1)56第56页,本讲稿共75页2.9.2 多项式的算术运算多项式的算术运算1.多项式的乘法和除法多项式的乘法和除法运算分别使用函数conv和deconv来实现。p=conv(pl,p2)%计算多项式p1和p2的乘积q,r=deconv(pl,p2)%计算多项式p1与p2的商练习练习57第57页,本讲稿共75页2.部分分式展开B,A=residue(r,p,k)%将部分分式和形式转化为两个多项式除法r,p,k=residue(B,A)%将分母多项式A和分子多项式B进行部分分式展开58第58页,本讲稿共75页例2-33 将两个表达式G1进行部分分式展开,a1=1-6 11-6 0;b1=10;r1,p1,k1=residue(b1,a1)%将G1部分分式展开r1=1.6667 -5.0000 5.0000 -1.6667p1=3.0000 2.0000 1.0000 0k1=59第59页,本讲稿共75页3.多项式的微积分使用polyder函数来计算多项式的微分:polyder(p)%计算p的导数polyder(a,b)%计算a和b乘积的导数q,d=polyder(b,a)%计算a和b商的导数MATLAB没有专门的多项式积分函数,但可以通过以下的公式计算完成积分:p./(length(p):-1:1),k%计算多项式p的积分60第60页,本讲稿共75页2.9.3 多项式的拟合与插值1.多项式的拟合多项式拟合是用一个多项式来逼近一组给定的数据,是数据分析上的常用方法。(1)拟合函数p=polyfit(x,y,n)%由x和y得出多项式p说明:x、y向量分别为数据点的横、纵坐标;n是拟合的多项式阶次;p为拟合的多项式,p是n+1个系数构成的行向量。61第61页,本讲稿共75页例2-35 使用多项式拟合的方法对曲线 的数据进行拟合,拟合后根据多项式绘制的曲线如图所示。x=0:0.5:10;y=2*sin(x)+sqrt(x);p1=polyfit(x,y,5)%5阶拟合 p2=polyfit(x,y,8)%8阶拟合62第62页,本讲稿共75页 MATLAB 7.3提供了方便的曲线拟合图形用户接口,提供了方便的曲线拟合图形用户接口,可以直接在图形窗口中使用菜单进行多项式拟合,在可以直接在图形窗口中使用菜单进行多项式拟合,在图形窗口中选择菜单图形窗口中选择菜单“Tools”“Basic Fitting”,则出,则出现现“Basic Fitting”窗口。窗口。63第63页,本讲稿共75页2.插值运算插值(interpolation)是在两个原始数据点之间根据一定的运算关系插入新的数据点,以便更准确地得出数据的变化规律。一维插值是指对一个自变量的插值,interp1函数用来进行一维插值:yi=interp1(x,y,xi,method)64第64页,本讲稿共75页例2-36 使用插值运算计算曲线中横坐标为9.5的对应纵坐标值,曲线表达式为 。x=1:10;y=2*sin(x)+sqrt(x);y01=interp1(x,y,9.5)%采用线性插值方法计算采用线性插值方法计算y01=2.9492 y02=interp1(x,y,9.5,spline)%采用三次样条插值方法计算采用三次样条插值方法计算y02=2.9558 y03=interp1(x,y,9.5,cubic)%采用三次多项式插值方法计算采用三次多项式插值方法计算y03=3.0586 y0=2*sin(9.5)+sqrt(9.5)%实际值实际值y0=2.931965第65页,本讲稿共75页练习:x=uint8(2.3e10),则x所占的字节是_个。A.1 B.2 C.4 D.8答案:答案:A66第66页,本讲稿共75页练习:下列_是合法常量。A.3*e10 B.1e500 C.-1.85e-56 D.10-2答案:答案:C67第67页,本讲稿共75页练习:已知x=0:10,则x有_个元素。A.10 B.11 C.9 D.12答案:答案:B68第68页,本讲稿共75页练习:已知数组a=,则a(:,3)是指_ A.所有元素 B.第一行元素C.第三列元素 D.第三行元素答案:答案:C69第69页,本讲稿共75页练习求解方程组 70第70页,本讲稿共75页练习:已知s=显示hello,则s的元素个数是_ A.12 B.9 C.7 D.18答案:答案:B71第71页,本讲稿共75页练习:运行字符串函数strncmp(s1,s2,2),则结果是_ A.1 B.0 C.false D.true答案:答案:B72第72页,本讲稿共75页练习:计算x从0到20间隔为1的行向量,y=sin(x)中,xpi)&(x4*pi)x=x1.*xy=sin(x)73第73页,本讲稿共75页练习:计算三个多项式s1、s2和s3的乘积,则算式为_ A.conv(s1,s2,s3)B.s1*s2*s3C.conv(conv(s1,s2),s3)D.conv(s1*s2*s3)答案:答案:C74第74页,本讲稿共75页将传递函数进行部分分式展开:b=10a=conv(1 3,conv(1 1,1 2)r,p,k=residue(b,a)75第75页,本讲稿共75页