Matlab一维数组及其应用_第1页
Matlab一维数组及其应用_第2页
Matlab一维数组及其应用_第3页
Matlab一维数组及其应用_第4页
Matlab一维数组及其应用_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab:一维数组及其应用一、一维数组二、一维数组在二维绘图中的应用三、一维数组在向量运算中的应用四、一维数组在一元多项式运算中的应用1一、一维数组数值数组(简称为数组)是Matlab中最重要的一种内建数据类型数组运算是Matlab软件定义的运算规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)进行运算。21、一维数组的两种形式行数组:n个元素排成一行 又称为行向量(row vector)列数组:m个元素排成一列又称为列向量(column vector)一般情况下,向量

2、指列向量32、用方括号 创建一维数组整个数组放在方括号里行数组元素用空格或逗号分隔 x = 2, pi/2, sqrt(3), 3+5i列数组元素用分号分隔 y = 2;pi;3/4;j标点符号一定要在英文状态下输入 x = 生成空数组43、用冒号创建一维数组x = a:bx = a:inc:b默认 inc = 1x = a,a+inc,a+2*inc,a,b必须为实数a是数组x中的第一个元素,b不一定是数组x的最后一个元素。54、用linspace()函数创建一维数组x = linspace(a,b)x = linspace(a,b,n)x = linspace(0,pi,10)x = li

3、nspace(1+i,100+100*i)在a,b区间内生成 n 个数据,包括a和b在内默认 n = 100若a,b为实数,等效于:65、用logspace()函数创建一维数组x = logspace(a,b)默认n = 50 x = logspace(a,b,n)x = logspace(a,pi)76、引用一维数组中的单个元素x = 1:5k = 2a = x(k) 引用数组 x 中的第 k 个元素,将其赋值给变量 ab = x(end) 引用数组 x 中的最后一个元素,将其赋值给变量 bc = x(8) 会出现什么结果?87、一维数组中单个元素的赋值x = 1:5a = 1.5k = 3

4、x(k) = 0将 0 赋值给数组 x 中的第 k 个元素x(end) = a将 a 赋值给数组 x 中的最后一个元素x(8) = 6.5 会出现什么结果?98、引用一维数组中的子数组引用一维数组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)109、给一维数组中的子数组赋值将2、7分别赋值给x的第1、4个元素x = linspace(1,5)x(1,4)

5、 = 2,7x = linspace(1,5)s = 1,4a = 2,7x(s) = a1110、Matlab中的函数在一维数组上的运算规则Matlab中的很多函数都可以直接以数组作为输入参数,函数输出也为数组。输入为行数组,则输出也为行数组输入为列数组,则输出也为列数组1210、一维数组的转置运算x.xx做转置(行列,列行)x做共轭转置若x的元素均为实数,则x.与x的结果相同x = (1:100)1311、一维数组与一维数组的运算x + yx - yx.*yx./yx.yx.y加减乘右除左除幂两个一维数组之间进行运算,要求:1、两个数组都为行数组(或都为列数组)2、数组元素个数相同,对应位

6、置的元素做C语言中,可使用循环语句完成类似的操作y + xy - xy.*xy./xy.xy.x1412、一维数组与数的运算若x为数组,c为数(实数或复数),x + cx cc.*xx./cx.cx.c加减乘右除左除幂数组的每个元素都与数c做c + x c - xc*xc./xc.xc.x 1513、与一维数组相关的函数max(x)a,b = max(x)max(x,y)返回x中的最大值返回x的最大值(a)及最大值在x中的位置(b)返回一向量,元素为x,y相同位置上的较大值min(x)c,d= min(x)min(x,y)返回x中的最小值返回x的最小值(c)及最小值在x中的位置返回一向量,元素

7、为x,y相同位置上的较小值mean(x)返回x的平均值median(x)返回x中元素的中值std(x)计算x中的数值的标准差16sum(x)计算x的所有元素的和cumsum(x)返回一个包含x的元素的累加和的向量,其大小与x相同prod(x)计算x的元素的积cumprod(x)返回一个包含x的元素的累乘积的向量,其大小与x相同sort(x)返回x中的元素按升序排序的向量length(x)返回数组的长度(行数或列数种的较大值)numel(x)返回数组元素的个数17一维数组相关函数的应用以线性拟合为例nT()R()119.176.30225.077.80330.179.25436.080.8054

8、0.082.35645.183.90750.085.10测得铜导线在温度Ti下的电阻为Ri,编写一个M脚本文件,用matlab提供的数组函数对数据进行线性拟合,求出斜率、截距和相关系数,并与origin的拟合结果进行比较。18x=0:0.2:2*pi;plot(x,cos(x),k*-);二、一维数组在二维绘图中的应用1、plot(a,b,string) a, b 都是一维数组,以 a 中元素为横坐标, b 中元素为纵坐标作平面曲线。 a, b 必须具有相同长度。string 是用 单引号 括起来的字符串,用来指定图形的属性(点、线的形状和颜色)黑色、实线离散点用星号属性可以全部指定,也可以只

9、指定其中某几个。排列顺序任意192、线型、标记和颜色线型点标记颜色- 实线: 点线-. 点划线- 虚线. 点o 小圆圈x 叉号+ 加号星号s 方格d 菱形v 下三角 上三角 右三角p 五角星h 六角星b 蓝色g 绿色r 红色c 青色m 棕色y 黄色k 黑色w 白色203、用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);214、在已存在的图形上添加新图形可以使用hold命令在一

10、个已经存在得图形上添加一个新的图形。hold on:在输入新的plot函数得时候,matlab不会将现存得坐标轴删除,而是将新得曲线添加到当前的坐标轴中。当新的数据超出了当前坐标限的范围,matlab就将坐标轴重新刻度。hold off:将当前的图形窗口中的图形释放,用以绘制新的图形。hold:实现hold设置的切换。ishold:查询hold当前是on还是off22例:使用hold绘制多个图形x= 0:pi/10:2*pi;y1=sin(x)y2=cos(x)plot(x,y1);hold on;plot(x,y2);235、在一个图形窗口中绘制多个子图一个图形窗口可以包含多个子图,每个子图

11、拥有自己的坐标轴subplot(m,n,p)将一个绘图窗口分割成 mn 个子图,并将第 p 个子图选定为当前的绘图区域。子图从最上边一行开始 ,从左至右、从上至下依次编号24例:使用子图 x= 0:pi/10:2*pi; y1=sin(x) y2=cos(x) subplot(2,2,1); plot(x,y1); subplot(2,2,2); plot(x,y2);被激活的子图在用户输入另一个subplot或者figure命令之前会一直保持被激活状态。当一个新的subplot命令改变了在图形窗口中的子图数量的时候,原来的那些子图就被擦除掉了,以便给新的子图腾出空间。为了回到默认的模式并且在

12、整个图形窗口中只用一套坐标轴,可以使用命令subplot(1,1,1)256、在多个图形窗口中绘图激活绘图窗口figure(n)关闭图形窗口close(n)close all擦除窗口的内容clf:将一个图形窗口的内容擦除而不关闭它。clf reset:将当前的图形窗口擦除,然后将诸如hold这样的所有属性重新设置为它们的默认状态。26例:使用多个图形窗口x= 0:pi/10:2*pi;y1=sin(x)y2=cos(x)figure(1);plot(x,y1);figure(2);plot(x,y2);为了在一个已有的图形窗口中绘制一个新的图形,这个窗口必须是激活的,或者是当前的图形窗口。27

13、上机练习28三、一维数组在向量运算中的应用291、向量的模(长度) a = 4,3,1 d = sqrt(sum(a.*a)或: d = sqrt(sum(a.2)302、两点之间的距离 a = 4,3,1 b = 5,2,3 AB = sqrt(sum(a - b).2)313、向量的方向角与方向余弦,单位向量 a = 4,3,1 d = sqrt(sum(a.2) e0 = a./d324、向量的线性运算a = 4,3,1b = 5,2,3c = 1.6直接利用matlab的数组运算规则即可进行运算pab = a + bsab = a bd = c*a335、向量的内积(点积,点乘)dot

14、(a,b) =sqrt(dot(a,a)Matlab中提供了 dot() 函数实现向量的内积346、两个向量之间的夹角tmp = dot(a,b)/sqrt(dot(a,a)/sqrt(dot(b,b)theta = acos(tmp)357、向量的叉积(叉乘)cross(a,b) = Matlab中提供了 cross() 函数实现向量的内积368、向量的混合积:dot(cross(a,b),c)37上机练习:383.以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)为顶点的四面体的体积。

15、39四、一维数组在一元多项式运算中的应用借助matlab提供的函数,处理多项式是一件非常简单的事情,很容易对多项式进行积分、微分以及求根的操作。一元多项式在代数中占有非常重要的地位。在实际应用中如对实验数据的插值、微商和曲线拟合等,都要大量用到多项式;在矩阵分析时,也要用到一元多项式的概念。多项式函数是形式最简单的函数,也是最容易计算的函数,从理论上讲,它可以表示绝大多数复杂函数。在许多计算机的计算和编程中,很多函数值如sin(x),cos(x)等的计算都是先将函数进行Tailor展开为多项式进行逼近计算的,并且都能达到很高的精度。401、多项式的表示和创建在matlab中,一个一元多项式用一

16、个行向量来表示的,向量元素为多项式系数的降幂排列,其中最后一个元素代表多项式中的0幂项。p = 1,-12,0,25,116412、多项式的符号表示poly2sym() 把系数向量表示的多项式转为符号表示poly2sym(p)用默认字符x来表示多项式的变量poly2sym(p,v)用字符v来表示多项式的便量p = 1,-12,0,25,116px = poly2sym(p)pt = poly2sym(p,t)423、计算多项式的值p = 1,-12,0,25,116; x1 = 2.3;x2 = -1,3,7; y = polyval(p,x)p1 = polyval(p,x1);p2 = p

17、olyval(p,x2);计算多项式p在x处的值,x可以是标量,向量或矩阵434、求多项式的根r = roots(p)此函数返回多项式p的根组成的向量多项式和多项式的根都是用向量表示的,为加以区别,多项式的根表示成列向量。p = 1,-12,0,25,116r = root(p)对于系数为实数的多项式,如果其根出现复数,则复数必是成对出现的。445、由根创建相应的多项式r = 1;2;-1;3;7 p = poly(r)p = poly(r)r是一个向量,构造一个多项式,其根为r由于matlab在进行数据处理时存在截断误差,因此,poly函数的返回值有可能在该出现0的位置出现了一个非常接近0的

18、数,有时还会使某些系数带有一个很小的虚部。因此建议对poly函数的输出结果再进行一次处理,从而消除有可能出现的数据错误。例如,可以通过比较将绝对值极小的数强制置0,或利用real函数将实部从结果中提取出来,取消错误虚部的影响。由根构造多项式时,所得到的多项式的第一项为145练习466、多项式的加法和减法当两个多项式的阶次不同时,其系数向量的长度也不同,这时需要先将低阶多项式的系数向量前边补上足够的0,以便使它和高阶多项式具有相同的长度,然后再执行加法(减法)运算。Matlab没有专门的函数执行多项式加法(减法)如果两个多项式的阶次相同,其系数向量的长度相等,多项式的加法就是将两个多项式向量直接

19、相加(相减)。477、多项式的乘法a = 1,2,3,4b = 1,4,9,16c = conv(a,b)w = conv(u,v)此函数返回多项式u和v的乘积多项式的乘法就是多项式系数向量之间的卷积如果要执行多个多项式之间的乘法运算,需要重复使用conv函数4849数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,2003)P87508、多项式的除法q,r = deconv(b,a ) q:用来存储b/a的商多项式, r:用来存储b/a的余数多项式余数通常都与除数和被除数中较长的那个向量等长,因此r的前面一般有若干个0此函数表示多项式b除以多项式a得到商多项式q和余数多项式r,如果r的元

20、素全部为0,则表示多项式b可以整除多项式a。多项式的除法就是多项式系数向量之间进行解卷积运算51练习529、多项式的微分(求导)polyder( )多项式微分k = polyder(p)求多项式p的微分多项式k = polyder(a,b)求a x b的微分q,d = poyder(b,a):求有理分式b/a的微分q:分子多项式d:分母多项式5310、多项式的积分p = 1,6,20,48,69,72,44h = polyder(g)q = polyint(h,44)q = polyint(p,k)对多项式p积分,k为积分常数q = polyint(p)对多项式p积分,积分常数为05411、部分分式展开(留数计算)找出两个多项式b(x)和a(x)之比b(x)/a(x)的留数、极点及直项向量。将部分分式展开的形式还原为两个多项式b(x)和a(x)相除的形式r,p,k = residue(b,a)b,a = residue(r,p,k)55求函数在指定点处的留数56数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,2003)P13057数学物理方法(陆全康 赵惠芬,第二版,高等教育出版社,2003)P15758数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论