数值数组及其运算PPT课件_第1页
数值数组及其运算PPT课件_第2页
数值数组及其运算PPT课件_第3页
数值数组及其运算PPT课件_第4页
数值数组及其运算PPT课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

.,1,本章集中叙述了一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用、最基本、最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。,.,2,2.1引导,数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩阵的堆叠”,甚至更高的任意维。数组运算是指:无论在数组上实施什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等的操作。,.,3,数组和数组运算的目的在于:使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式提高程序的向量化程度,提高计算效率,节省计算机开销。,.,4,2.2一维数组的创建和寻访,2.2.1一维数组的创建(1)逐个元素输入法x=2pi/2sqrt(3)3+5ix=2.00001.57081.73213.0000+5.0000i,.,5,(2)冒号成长法这是通过“步长”设定,生成一维“行”数组的方法。x=a:inc:ba是数组的第一个元素;inc是采样点之间的间隔,即步长。若(b-a)是inc的整数倍,则所生成的最后一个元素等于b,否则小于b。,.,6,(3)定数线形采样法该法在设定的“总点数”下,均匀采样生成一维“行”数组。格式:x=linspace(a,b,n)其中,a,b分别是生成数组的第一个和最后一个元素。n是采样总点数。x=linspace(10,20,11)x=1011121314151617181920,.,7,2.2.2一维数组的子数组寻访和赋值(1)子数组的寻访x(index)寻找什么样的子数组,取决于下标index,其取值范围是(1,数组长度)之间的正整数或正整数数组。eg:x=rand(1,5)x=0.95010.23110.60680.48600.8913x(3)ans=0.6068x(125)ans=0.95010.23110.8913,.,8,(2)子数组的赋值eg:x(3)=0 x=0.95010.231100.48600.8913x(14)=11x=1.00000.231101.00000.8913,.,9,2.3二维数组的创建,2.3.1直接输入法规则:整个输入数组必须用括住数组元素必须用逗号或空格分隔在内数组的行与行之间必须用分号分隔或按Enter键分割,.,10,数组元素可以是数字或任何matlab表达式,表达式不可包含未知的变量;可以是实数,也可以是复数,复数可用特殊函数i输入。例:1.a=123;4562.b=2pi/2;sqrt(3)3+5i3.x=9;y=pi/6;%定义x,y变量A=35sin(y)cos(y)x27x/251%产生数组A说明:%为Matlab注释的开始标志,后面的文字不进行计算,.,11,2.3.2利用M文件创建和保存数组针对比较大而复杂的数组步骤:(1)打开文件编辑调试器,并在空白填写框中输入数组;(2)保存文件,命名为*.m;(3)在MATLAB指令窗口中,运行*.m文件,数组自动保存在MATLAB内存中。,.,12,2.4二维数组元素的标识,2.4.1“全下标”标识即指出“第几行,第几列”的元素eg:a=rand(2,3)a=0.76210.01850.44470.45650.82140.6154a(2,3)ans=0.6154,.,13,2.4.2“单下标”标识即用一个下标来指明元素在数组中的位置。首先进行“一维编号”,把二维数组按先左后右的次序、首尾相接排成一维长列;然后,自上而下对元素位置进行编号。MATLAB在实现两种标识方法间的转换命令有:sub2ind全下标单下标ind2sub单下标全下标,.,14,2.4.3“逻辑1”标识eg:A=zeros(2,5)A=0000000000A(:)=-4:5A=-4-2024-3-1135L=abs(A)3L=1000100001islogical(L)%判断L是否是逻辑值数组ans=1x=A(L)%把L中逻辑值为1对应的A元素取出x=-445,.,15,2.5二维数组的子数组寻访和赋值,A=zeros(2,4)A=00000000A(:)=1:8%全元素赋值法A=13572468s=235;A(s)Sa=102030A(s)=Sa,ans=235Sa=102030A=12030710468A(:,23)=ones(2)A=111710118,例:不同赋值方式示例。,同一维数组的子数组寻访和赋值的方法,.,16,2.6执行数组运算的常用函数,.,17,2.7数组运算和矩阵运算,从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中。,.,18,.,19,1.直接输入矩阵的创建规则:矩阵元素必须用括住矩阵元素必须用逗号或空格分隔在内矩阵的行与行之间必须用分号分隔或按Enter键分割,.,20,矩阵的修改,直接修改可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改。指令修改可以用A(,)=来修改。,.,21,例如a=120;305;789a=120305789a(3,3)=0a=120305780,.,22,2.用matlab函数创建和修改矩阵,Matlab提供了大量的函数来创建一些常用的特殊矩阵,例如对角阵、单位阵和零矩阵例1:0-1分布的随机矩阵,利用rand函数产生任意行列的随机矩阵a=rand(5,5),.,23,例2利用diag产生对角阵diag(M)M为矩阵或向量,对于矩阵,取对角元产生一个列向量;对于向量则产生一个对角阵,a=rand(5,5)a=0.70270.79480.97970.13650.66140.54660.95680.27140.01180.28440.44490.52260.25230.89390.46920.69460.88010.87570.19910.06480.62130.17300.73730.29870.9883,D=diag(d)%向量产生矩阵D=0.7027000000.9568000000.2523000000.1991000000.9883,d=diag(a)%矩阵产生列向量d=0.70270.95680.25230.19910.9883,.,24,Matlab中用于产生特殊矩阵的函数,zeros(m,n)mn的零矩阵,全部元素都为0ones(m,n)全部元素都为1的mn的矩阵rand(m,n)随机矩阵eye(m,n)单位矩阵magic(n)n维magic方阵空阵matlab允许输入空阵,当一项操作无结果时,返回空阵。,.,25,还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。matlab函数名必须小写。,.,26,3矩阵的基本数值运算,(1)矩阵加、减法运算规则:相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。,.,27,(2)矩阵乘()运算规则:A矩阵的列数必须等于B矩阵的行数例a=123;456;780;b=1;2;3;c=a*bc=143223标量可与任何矩阵相乘例d=-1;0;2;f=pi*df=-3.141606.2832,.,28,在matlab中矩阵除的运算有两种矩阵除运算,MATLAB用“/”代表右除(常用除法)和“”左除运算。这两种运算的差别如下:例如:2/5表示0.4,25表示2.5;对于矩阵,A/B表示AB-1,即A*inv(B);BA表示B-1A,即inv(B)*A。矩阵除法可以看作矩阵乘法的逆运算,(3)矩阵除运算,.,29,例左除解方程组ax=b的解:x=ab,a=rand(5);%产生(5*5)的均匀分布随机矩阵b=ones(5,1);%产生全为1的5元列向量x1=inv(a)*bx1=-0.17340.55730.03090.72080.8147x2=abx2=-0.17340.55730.03090.72080.8147,.,30,apa自乘p次幂,方阵,1的整数,(4)矩阵乘方an,ap,pa,对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量ap使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,ap则无意义。,.,31,a=1,2,3;4,5,6;7,8,9;a2ans=303642668196102126150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,.,32,a0.5ans=0.4498+0.7623i0.5526+0.2068i0.6555-0.3487i1.0185+0.0842i1.2515+0.0228i1.4844-0.0385i1.5873-0.5940i1.9503-0.1611i2.3134+0.2717i,.,33,inv矩阵求逆size矩阵的大小(行列数)det行列式的值eig矩阵的特征值rank矩阵的秩矩阵转置sqrt矩阵开方svd矩阵的奇异值分解,(5)矩阵的其它运算,.,34,(6)矩阵的一些特殊操作,矩阵的变维a=1:12;b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩阵的变向rot90:旋转;fliplr:上翻;flipud:下翻矩阵的抽取diag:抽取主对角线;tril:抽取主下三角;triu:抽取主上三角,.,35,2.8数组构作技法综合,赋值扩展法A=reshape(1:9,3,3)A=147258369A(5,5)=111A=147002580036900000000000111A(:,6)=222A=147002222580022236900222000002220000111222多次寻访扩展法AA=A(:,1:6,1:6)AA=147002221470022225800222258002223690022236900222000002220000022200001112220000111222,合成扩展法B=ones(2,6)B=111111111111AB_r=A;BAB_r=147002222580022236900222000002220000111222111111111111AB_c=A,B(:,1:5)AB_c=1470022211258002221136900222110000022211000011122211,(1)数组的扩展,.,36,(2)单下标寻访和reshape指令演示clearA=reshape(1:16,2,8)变一维数组为(28)数组A=13579111315246810121416reshape(A,4,4)ans=15913261014371115481216s定义单下标数组A(s)=0对元素赋值A=00570013152400101200,.,37,(3)逻辑函数的运用R=randn(3,6)R=0.86440.8735-1.10270.1684-0.5523-0.61490.0942-0.43800.3962-1.9654-0.8197-0.2546-0.8519-0.4297-0.9649-0.74431.1091-0.2698L=abs(R)1.5%不等式条件运算,结果给出逻辑数组L=000100111101010001R(L)=0%“逻辑1”对应的元素赋0值R=0.86440.8735-1.10270-0.5523-0.61490000-0.81970-0.85190-0.9649-0.74431.10910s=(find(R=0)%利用find获得符合关系等式条件的元素的“单下标”s=256810111718R(s)=111利用“单下标”定位赋值R=0.86440.8735-1.1027111.0000-0.5523-0.6149111.0000111.0000111.0000111.0000-0.8197111.0000-0.8519111.0000-0.9649-0.74431.1091111.0000ii,jj=find(R=111);%利用find获得符合关系等式条件的元素的“双下标”disp(ii),disp(jj)2232122312234466,.,38,2.9高维数组,2.9.1高维数组的创建方法:直接通过“全下标”元素赋值方法由若干相同的低维数组合成由函数ones,zeros,rand,randn直接创建借助cat,repmat,reshape等函数构作,.,39,【例1】“全下标”元素赋值方式创建高维数组演示。A(2,2,2)=1A(:,:,1)=0000A(:,:,2)=0001B(2,5,:)=1:3B(:,:,1)=0000000001B(:,:,2)=0000000002B(:,:,3)=0000000003,.,40,【例2】低维数组合成高维数组。clear;A=ones(2,3);A(:,:,2)=ones(2,3)*2;A(:,:,3)=ones(2,3)*3A(:,:,1)=111111A(:,:,2)=222222A(:,:,3)=333333,.,41,【例3】由函数ones,zeros,rand,randn直接创建标准高维数组的示例。rand(2,4,3)ans(:,:,1)=0.62780.97480.25850.69490.25440.23050.03130.1223ans(:,:,2)=0.48890.38980.84890.05870.91380.30710.42600.6331ans(:,:,3)=0.28020.20730.74380.27140.40510.20330.45660.2421,.,42,【例4】借助cat,repmat,reshape等函数构作高维数组。cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)%第一个输入宗量填写的数字是“表示串连接方向的维数”ans(:,:,1)=111111ans(:,:,2)=222222ans(:,:,3)=333333repmat(ones(2,3),1,1,3)第一个输入宗量是”模块数组”;第二个输入宗量是“各维方向”铺放“模块数组”的数目ans(:,:,1)=111111ans(:,:,2)=111111ans(:,:,3)=111111reshape(1:12,2,2,3)第一个输入宗量是“待重组”的数组;第二、三、四是“行数、列数、页数”ans(:,:,1)=1324ans(:,:,2)=5768ans(:,:,3)=9111012,.,43,2.9.2高维数组的标识(1)数组维数和ndims指令(2)数组的大小和size指令、length指令eg:clear;A=reshape(1:24,2,3,4);dim_A=ndims(A)%维数size_A=size(A)%大小L_A=length(A)%长度(等价max(size(A)dim_A=3size_A=234L_A=4,.,44,2.10“非数”和“空”数组,2.10.1非数NaN,根据IEEE数学标准,0/0,0/,0*等运算都会产生非数(NotaNumber)。该非数在MATLAB中用NaN或nan记述。性质:(1)NaN参与运算所得的结果也是NaN,即具有传递性(2)非数没有大小的概念,即两个非数不能比较大小。,.,45,非数的功能(1)真实记述0/0,0/,0*运算的结果(2)避免可能因为0/0,0/,0*运算而造成程序执行的中断(3)在数据可视化中,用来剪裁图

温馨提示

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

评论

0/150

提交评论