《Matlab02:一维数组及其应用课件.ppt》由会员分享,可在线阅读,更多相关《Matlab02:一维数组及其应用课件.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab:一维数组及其应用一、一维数组二、一维数组在二维绘图中的应用三、一维数组在向量运算中的应用四、一维数组在一元多项式运算中的应用一、一维数组数值数组(简称为数组)是Matlab中最重要的一种内建数据类型数组运算是Matlab软件定义的运算规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)进行运算。1、一维数组的两种形式行数组:n个元素排成一行 又称为行向量(row vector)列数组:m个元素排成一列又称为列向量(column vector)一般情况下,向量指列
2、向量2、用方括号 创建一维数组整个数组放在方括号里行数组元素用空格或逗号分隔 x=2,pi/2,sqrt(3),3+5i列数组元素用分号分隔 y=2;pi;3/4;j标点符号一定要在英文状态下输入 x=生成空数组4、用linspace()函数创建一维数组x=linspace(a,b)x=linspace(a,b,n)x=linspace(0,pi,10)x=linspace(1+i,100+100*i)在a,b区间内生成 n 个数据,包括a和b在内默认 n=100若a,b为实数,等效于:5、用logspace()函数创建一维数组x=logspace(a,b)默认n=50 x=logspace(
3、a,b,n)x=logspace(a,pi)6、引用一维数组中的单个元素x=1:5k=2a=x(k)引用数组 x 中的第 k 个元素,将其赋值给变量 ab=x(end)引用数组 x 中的最后一个元素,将其赋值给变量 bc =x(8)会出现什么结果?8、引用一维数组中的子数组引用一维数组x中的第2、5、9个元素,将其赋值给变量 ax=linspace(1,5)a=x(2,5,9)b=x(end:-1:1)c=x(1:2:end)d=x(2:2:end)b=?c=?d=?x=linspace(1,5)s=2,5,9a=x(s)9、给一维数组中的子数组赋值将2、7分别赋值给x的第1、4个元素x=li
4、nspace(1,5)x(1,4)=2,7x=linspace(1,5)s=1,4a=2,7x(s)=a10、一维数组的转置运算x.xx做转置(行列,列行)x做共轭转置若x的元素均为实数,则x.与x的结果相同x=(1:100)12、一维数组与数的运算若x为数组,c为数(实数或复数),x+cx cc.*xx./cx.cx.c加减乘右除左除幂数组的每个元素都与数c做c+x c-xc*xc./xc.xc.x 13、与一维数组相关的函数max(x)a,b=max(x)max(x,y)返回x中的最大值返回x的最大值(a)及最大值在x中的位置(b)返回一向量,元素为x,y相同位置上的较大值min(x)c,
5、d=min(x)min(x,y)返回x中的最小值返回x的最小值(c)及最小值在x中的位置返回一向量,元素为x,y相同位置上的较小值mean(x)返回x的平均值median(x)返回x中元素的中值std(x)计算x中的数值的标准差一维数组相关函数的应用以线性拟合为例nT()R()119.176.30225.077.80330.179.25436.080.80540.082.35645.183.90750.085.10测得铜导线在温度Ti下的电阻为Ri,编写一个M脚本文件,用matlab提供的数组函数对数据进行线性拟合,求出斜率、截距和相关系数,并与origin的拟合结果进行比较。x=0:0.2:
6、2*pi;plot(x,cos(x),k*-);二、一维数组在二维绘图中的应用1、plot(a,b,string)a,b 都是一维数组,以都是一维数组,以 a 中元素为横坐标,中元素为横坐标,b 中元素中元素为纵坐标作平面曲线。为纵坐标作平面曲线。a,b 必须具有必须具有相同长度相同长度。string 是用是用 单引号单引号 括起来的字符串,用来指定图形的属性(点、线的形括起来的字符串,用来指定图形的属性(点、线的形状和颜色)状和颜色)黑色、实线黑色、实线离散点用星号离散点用星号属性可以全部指定,也属性可以全部指定,也可以只指定其中某几个。可以只指定其中某几个。排列顺序任意排列顺序任意2、线型
7、、标记和颜色线型点标记颜色-实线:点线-.点划线-虚线.点o 小圆圈x 叉号+加号星号s 方格d 菱形v 下三角 上三角 右三角p 五角星h 六角星b 蓝色g 绿色r 红色c 青色m 棕色y 黄色k 黑色w 白色3、用plot函数同时绘制多条曲线plot(x1,y1,s1,x2,y2,s2,)x1,y1,s1第一条曲线及其属性x2,y2,s2 第二条曲线及其属性属性可以不写 x=0:pi/10:2*pi;y1=sin(x)y2=cos(x)plot(x,y1,x,y2);4、在已存在的图形上添加新图形可以使用hold命令在一个已经存在得图形上添加一个新的图形。hold on:在输入新的plot
8、函数得时候,matlab不会将现存得坐标轴删除,而是将新得曲线添加到当前的坐标轴中。当新的数据超出了当前坐标限的范围,matlab就将坐标轴重新刻度。hold off:将当前的图形窗口中的图形释放,用以绘制新的图形。hold:实现hold设置的切换。ishold:查询hold当前是on还是off5、在一个图形窗口中绘制多个子图一个图形窗口可以包含多个子图,每个子图拥有自己的坐标轴subplot(m,n,p)将一个绘图窗口分割成 mn 个子图,并将第 p 个子图选定为当前的绘图区域。子图从最上边一行开始,从左至右、从上至下依次编号例:使用子图 x=0:pi/10:2*pi;y1=sin(x)y2
9、=cos(x)subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);被激活的子图在用户输入另一个subplot或者figure命令之前会一直保持被激活状态。当一个新的subplot命令改变了在图形窗口中的子图数量的时候,原来的那些子图就被擦除掉了,以便给新的子图腾出空间。为了回到默认的模式并且在整个图形窗口中只用一套坐标轴,可以使用命令subplot(1,1,1)6、在多个图形窗口中绘图激活绘图窗口figure(n)关闭图形窗口close(n)close all擦除窗口的内容clf:将一个图形窗口的内容擦除而不关闭它。clf reset:将当前
10、的图形窗口擦除,然后将诸如hold这样的所有属性重新设置为它们的默认状态。上机练习三、一维数组在向量运算中的应用2、两点之间的距离 a=4,3,1 b=5,2,3 AB=sqrt(sum(a-b).2)3、向量的方向角与方向余弦,单位向量 a=4,3,1 d=sqrt(sum(a.2)e0=a./d4、向量的线性运算a=4,3,1b=5,2,3c=1.6直接利用matlab的数组运算规则即可进行运算pab=a+bsab=a bd=c*a5、向量的内积(点积,点乘)dot(a,b)=sqrt(dot(a,a)Matlab中提供了 dot()函数实现向量的内积6、两个向量之间的夹角tmp=dot(
11、a,b)/sqrt(dot(a,a)/sqrt(dot(b,b)theta=acos(tmp)7、向量的叉积(叉乘)cross(a,b)=Matlab中提供了 cross()函数实现向量的内积8、向量的混合积:dot(cross(a,b),c)上机练习:3.以A(1,2,3),B(2,0,5),C(4,2,-1)为顶点的三角形的面积。4.求以A(0,0,2),B(3,0,5),C(1,1,0),D(4,1,2)为顶点的四面体的体积。四、一维数组在一元多项式运算中的应用借助matlab提供的函数,处理多项式是一件非常简单的事情,很容易对多项式进行积分、微分以及求根的操作。一元多项式在代数中占有非
12、常重要的地位。在实际应用中如对实验数据的插值、微商和曲线拟合等,都要大量用到多项式;在矩阵分析时,也要用到一元多项式的概念。多项式函数是形式最简单的函数,也是最容易计算的函数,从理论上讲,它可以表示绝大多数复杂函数。在许多计算机的计算和编程中,很多函数值如sin(x),cos(x)等的计算都是先将函数进行Tailor展开为多项式进行逼近计算的,并且都能达到很高的精度。1、多项式的表示和创建在matlab中,一个一元多项式用一个行向量行向量来表示的,向量元素为多项式系数的降幂降幂排列,其中最后一个元素代表多项式中的0幂项。p=1,-12,0,25,1162、多项式的符号表示poly2sym()把
13、系数向量表示的多项式转为符号表示poly2sym(p)用默认字符x来表示多项式的变量poly2sym(p,v)用字符v来表示多项式的便量p=1,-12,0,25,116px=poly2sym(p)pt=poly2sym(p,t)3、计算多项式的值p=1,-12,0,25,116;x1=2.3;x2=-1,3,7;y=polyval(p,x)p1=polyval(p,x1);p2=polyval(p,x2);计算多项式p在x处的值,x可以是标量,向量或矩阵4、求多项式的根r=roots(p)此函数返回多项式p的根组成的向量多项式和多项式的根都是用向量表示的,为加以区别,多项式的根表示成列向量列向
14、量。p=1,-12,0,25,116r=root(p)对于系数为实数的多项式,如果其根出现复数,则复数必是成对出现的。5、由根创建相应的多项式r=1;2;-1;3;7 p=poly(r)p=poly(r)r是一个向量,构造一个多项式,其根为r由于matlab在进行数据处理时存在截断误差,因此,poly函数的返回值有可能在该出现0的位置出现了一个非常接近0的数,有时还会使某些系数带有一个很小的虚部。因此建议对poly函数的输出结果再进行一次处理,从而消除有可能出现的数据错误。例如,可以通过比较将绝对值极小的数强制置0,或利用real函数将实部从结果中提取出来,取消错误虚部的影响。由根构造多项式时
15、,所得到的多项式的第一项为1练习6、多项式的加法和减法当两个多项式的阶次不同时,其系数向量的长度也不同,这时需要先将低阶多项式的系数向量前边补上足够的0,以便使它和高阶多项式具有相同的长度,然后再执行加法(减法)运算。Matlab没有专门的函数执行多项式加法(减法)如果两个多项式的阶次相同,其系数向量的长度相等,多项式的加法就是将两个多项式向量直接相加(相减)。7、多项式的乘法a=1,2,3,4b=1,4,9,16c=conv(a,b)w=conv(u,v)此函数返回多项式u和v的乘积多项式的乘法就是多项式系数向量之间的卷积如果要执行多个多项式之间的乘法运算,需要重复使用conv函数数学物理方
16、法(陆全康数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,赵惠芬,第二版,高等教育出版社,20032003)P87P878、多项式的除法q,r=deconv(b,a)q:用来存储b/a的商多项式,r:用来存储b/a的余数多项式余数通常都与除数和被除数中较长的那个向量等长,因此r的前面一般有若干个0此函数表示多项式b除以多项式a得到商多项式q和余数多项式r,如果r的元素全部为0,则表示多项式b可以整除多项式a。多项式的除法就是多项式系数向量之间进行解卷积运算练习9、多项式的微分(求导)polyder()多项式微分k=polyder(p)求多项式p的微分多项式k=polyder(a,b)求a
17、 x b的微分q,d=poyder(b,a):求有理分式b/a的微分q:分子多项式d:分母多项式10、多项式的积分p=1,6,20,48,69,72,44h=polyder(g)q=polyint(h,44)q=polyint(p,k)对多项式p积分,k为积分常数q=polyint(p)对多项式p积分,积分常数为011、部分分式展开(留数计算)找出两个多项式b(x)和a(x)之比b(x)/a(x)的留数、极点及直项向量。将部分分式展开的形式还原为两个多项式b(x)和a(x)相除的形式r,p,k=residue(b,a)b,a=residue(r,p,k)求函数在指定点处的留数数学物理方法(陆全
18、康数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,赵惠芬,第二版,高等教育出版社,20032003)P130P130数学物理方法(陆全康数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,赵惠芬,第二版,高等教育出版社,20032003)P157P157数学物理方法(陆全康数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,赵惠芬,第二版,高等教育出版社,20032003)P160P160数学物理方法(陆全康数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,赵惠芬,第二版,高等教育出版社,20032003)P161P16112、多项式的矩阵运算p是多项式的系数向量,相当于用矩阵X
19、代替多项式的变量来对矩阵进行计算,X必须为方阵。X=pascal(4)p=1,2,3polyval(p,X)polyvalm(p,X)Y=polyvalm(p,X)13、多项式拟合p=polyfit(x,y,n)多项式曲线拟合(最小二乘法)n=1就是进行线性拟合xy00.20.611.31.61.71.81.92.22.32.52.62.90-2.5-4-5.7-3.5-2-123.5477.59.910.9xy3.13.43.84.14.44.74.84.955.15.311.913.51311.996.541.50-2.5-5多项式拟合时的注意事项在进行曲线拟合时对多项式阶次的选择是任意的。虽然高阶的多项式可以更准确地拟合数据(仅指该曲线与给定的数据之间的均方误差最小),但在进行曲线拟合时,并不需要采用太高阶的多项式,这主要基于以下原因:1、越是高阶的多项式其数值特性越差,计算起来也越耗时;2、随着多项式阶次的升高,拟合的曲线变的越来越不平滑,通常会出现用户不愿意看到的局部波形;3、由于数据本身的近似性,因此在进行数据拟合时没有必要仅仅考虑使拟合的曲线无限接近数据点,而要在曲线的阶次合均方误差之间综合考虑,因为越是高阶的多项式在物理实现时越困难。从数学原理上,n+1个数据点可以惟一定义一个n次曲线(或n阶多项式)。