《数值数组及其运算课件.ppt》由会员分享,可在线阅读,更多相关《数值数组及其运算课件.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数值数组及其运算1第1页,此课件共55页哦本章集中叙述了一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用、最基本、最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。2第2页,此课件共55页哦2.1引导数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩阵的堆叠”,甚至更高的任意维。数组运算是指:无论在数组上实施什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等的操作。3第3页,此课件共55页哦数组和数组运算的目的在于:使计算程序简单、易读,使程序指令更接近于教科书上
2、的数学计算公式提高程序的向量化程度,提高计算效率,节省计算机开销。4第4页,此课件共55页哦2.2一维数组的创建和寻访2.2.1一维数组的创建(1)逐个元素输入法x=2pi/2sqrt(3)3+5ix=2.00001.57081.73213.0000+5.0000i5第5页,此课件共55页哦(2)冒号成长法这是通过“步长”设定,生成一维“行”数组的方法。x=a:inc:ba是数组的第一个元素;inc是采样点之间的间隔,即步长。若(b-a)是inc的整数倍,则所生成的最后一个元素等于b,否则小于b。6第6页,此课件共55页哦(3)定数线形采样法该法在设定的“总点数”下,均匀采样生成一维“行”数组
3、。格式:x=linspace(a,b,n)其中,a,b分别是生成数组的第一个和最后一个元素。n是采样总点数。x=linspace(10,20,11)x=10111213141516171819207第7页,此课件共55页哦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.89138第8页,此课件共55页哦(2)子数
4、组的赋值eg:x(3)=0 x=0.95010.231100.48600.8913x(14)=11x=1.00000.231101.00000.89139第9页,此课件共55页哦2.3二维数组的创建2.3.1直接输入法规则:整个输入数组必须用括住数组元素必须用逗号或空格分隔在内数组的行与行之间必须用分号分隔或按Enter键分割10第10页,此课件共55页哦数组元素可以是数字或任何matlab表达式,表达式不可包含未知的变量;可以是实数,也可以是复数,复数可用特殊函数i输入。例:1.a=123;4562.b=2pi/2;sqrt(3)3+5i3.x=9;y=pi/6;%定义x,y变量A=35si
5、n(y)cos(y)x27x/251%产生数组A说明:%为Matlab注释的开始标志,后面的文字不进行计算11第11页,此课件共55页哦2.3.2利用M文件创建和保存数组针对比较大而复杂的数组步骤:(1)打开文件编辑调试器,并在空白填写框中输入数组;(2)保存文件,命名为*.m;(3)在MATLAB指令窗口中,运行*.m文件,数组自动保存在MATLAB内存中。12第12页,此课件共55页哦2.4二维数组元素的标识2.4.1“全下标”标识即指出“第几行,第几列”的元素eg:a=rand(2,3)a=0.76210.01850.44470.45650.82140.6154a(2,3)ans=0.6
6、15413第13页,此课件共55页哦2.4.2“单下标”标识即用一个下标来指明元素在数组中的位置。首先进行“一维编号”,把二维数组按先左后右的次序、首尾相接排成一维长列;然后,自上而下对元素位置进行编号。MATLAB在实现两种标识方法间的转换命令有:sub2ind全下标单下标ind2sub单下标全下标14第14页,此课件共55页哦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元
7、素取出x=-44515第15页,此课件共55页哦2.5二维数组的子数组寻访和赋值A=zeros(2,4)A=00000000A(:)=1:8%全元素赋值法全元素赋值法 A=13572468s=2 3 5;A(s)Sa=10 20 30A(s)=Sa ans=235Sa=102030A=12030710468A(:,2 3)=ones(2)A=111710118例:不同赋值方式示例。同一维数组的子数组寻访和赋值的方法16第16页,此课件共55页哦2.6执行数组运算的常用函数MATLAB典典型函数型函数含义含义MATLAB典型函数典型函数含义含义abs(x)求绝对值求绝对值tan(x)正切值正切值
8、sqrt(x)求平方根值求平方根值cot(x)余切值余切值exp(x)指数运算指数运算atan(x)反正切值反正切值sin(x)正弦值正弦值acot(x)反余切值反余切值cos(x)余弦值余弦值log(x)自然对数自然对数asin(x)反正弦值反正弦值Log2(x)以以2为底的对数为底的对数acos(x)反余弦值反余弦值Log10(x)常用对数常用对数17第17页,此课件共55页哦2.7数组运算和矩阵运算从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方
9、便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中。18第18页,此课件共55页哦19第19页,此课件共55页哦1.直接输入矩阵的创建规则:矩阵元素必须用括住矩阵元素必须用逗号或空格分隔在内矩阵的行与行之间必须用分号分隔或按Enter键分割20第20页,此课件共55页哦矩阵的修改直接修改可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改。指令修改可以用A(,)=来修改。21第21页,此课件共55页哦例如a=120;305;789a=120305789a(3,3)=0a=12030578022第22页,此课件共55页哦2.用ma
10、tlab函数创建和修改矩阵Matlab提供了大量的函数来创建一些常用的特殊矩阵,例如对角阵、单位阵和零矩阵例1:0-1分布的随机矩阵,利用rand函数产生任意行列的随机矩阵a=rand(5,5)23第23页,此课件共55页哦例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.06
11、480.62130.17300.73730.29870.9883D=diag(d)%向量产生矩阵D=0.7027000000.9568000000.2523000000.1991000000.9883d=diag(a)%矩阵产生列向量d=0.70270.95680.25230.19910.988324第24页,此课件共55页哦Matlab中用于产生特殊矩阵的函数zeros(m,n)mn的零矩阵,全部元素都为0ones(m,n)全部元素都为1的mn的矩阵rand(m,n)随机矩阵eye(m,n)单位矩阵magic(n)n维magic方阵空阵matlab允许输入空阵,当一项操作无结果时,返回空阵。
12、25第25页,此课件共55页哦还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。matlab函数名必须小写。26第26页,此课件共55页哦3矩阵的基本数值运算(1)矩阵加、减法运算规则:相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。MATLAB表达式加a+b减a-b乘a*b除a/b或ab幂ab27第27页,此课件共55页哦(2)矩阵乘()运算规则:A矩阵的列数必须等于B矩阵的行数例a=123;456;780;b=1;2;3;c=a*bc=143223标量
13、可与任何矩阵相乘例d=-1;0;2;f=pi*df=-3.141606.283228第28页,此课件共55页哦在matlab中矩阵除的运算有两种矩阵除运算MATLAB用“/”代表右除(常用除法)和“”左除运算。这两种运算的差别如下:例如:2/5 表示0.4,25 表示2.5;对于矩阵,A/B 表示AB-1,即A*inv(B);BA 表示B-1A,即inv(B)*A。矩阵除法可以看作矩阵乘法的逆运算(3)矩阵除运算29第29页,此课件共55页哦例例左除解方程组左除解方程组ax=b的解的解 :x=aba=rand(5);%产生(5*5)的均匀分布随机矩阵b=ones(5,1);%产生全为1的5元列
14、向量x1=inv(a)*bx1=-0.17340.55730.03090.72080.8147x2=abx2=-0.17340.55730.03090.72080.814730第30页,此课件共55页哦apa自乘p次幂方阵方阵1的整数的整数(4)矩阵乘方an,ap,pa对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量ap使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,ap则无意义。31第31页,此课件共55页哦a=1,2,3;4,5,6;7,8,9;a2ans=303642668196102126150当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。32第32页,
15、此课件共55页哦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.2717i33第33页,此课件共55页哦inv矩阵求逆size矩阵的大小(行列数)det行列式的值eig矩阵的特征值rank矩阵的秩矩阵转置sqrt矩阵开方svd矩阵的奇异值分解(5)矩阵的其它运算34第34页,此课件共55页哦(6)矩阵的一些特殊操作矩阵的变维a=1:12;b=reshape(a,3,4)c=zeros(3
16、,4);c(:)=a(:)矩阵的变向rot90:旋转;fliplr:上翻;flipud:下翻矩阵的抽取diag:抽取主对角线;tril:抽取主下三角;triu:抽取主上三角35第35页,此课件共55页哦2.8数组构作技法综合赋值扩展法赋值扩展法A=reshape(1:9,3,3)A=147258369A(5,5)=111 A=147002580036900000000000111A(:,6)=222 A=147002222580022236900222000002220000111222多次寻访扩展法多次寻访扩展法AA=A(:,1:6,1:6)AA=1470022214700222258002
17、22258002223690022236900222000002220000022200001112220000111222合成扩展法合成扩展法B=ones(2,6)B=111111111111AB_r=A;B AB_r=147002222580022236900222000002220000111222111111111111AB_c=A,B(:,1:5)AB_c=1470022211258002221136900222110000022211000011122211(1)数组的扩展36第36页,此课件共55页哦(2)单下标寻访和reshape指令演示clearA=reshape(1:16,
18、2,8)变一维数组为(变一维数组为(28)数组)数组 A=13579111315246810121416reshape(A,4,4)ans=15913261014371115481216s=1 3 6 8 9 11 14 16;定义单下标数组定义单下标数组A(s)=0 对元素赋值对元素赋值 A=0057001315240010120037第37页,此课件共55页哦(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
19、-0.9649-0.74431.1091-0.2698L=abs(R)1.5%不等式条件运算,结果给出逻辑数组不等式条件运算,结果给出逻辑数组 L=000100111101010001 R(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 利用利用“单下标单下标”定位赋值定位赋值
20、 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)223212231223446638第38页,此课件共55页哦2.9高维数组2.9.1高维数组的创建方法:直接通过“全下标”元素赋值方法由若干相同的低维数组合成由函数one
21、s,zeros,rand,randn直接创建借助cat,repmat,reshape等函数构作39第39页,此课件共55页哦【例1】“全下标”元素赋值方式创建高维数组演示。A(2,2,2)=1 A(:,:,1)=0000A(:,:,2)=0001B(2,5,:)=1:3 B(:,:,1)=0000000001B(:,:,2)=0000000002B(:,:,3)=000000000340第40页,此课件共55页哦【例2】低维数组合成高维数组。clear;A=ones(2,3);A(:,:,2)=ones(2,3)*2;A(:,:,3)=ones(2,3)*3 A(:,:,1)=111111A(
22、:,:,2)=222222A(:,:,3)=33333341第41页,此课件共55页哦【例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.242142第42页,此课件共55页哦【例4】借助cat,re
23、pmat,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(:,:
24、,3)=111111reshape(1:12,2,2,3)第一个输入宗量是第一个输入宗量是“待重组待重组”的数组;第二、三、四是的数组;第二、三、四是“行数、列数、页数行数、列数、页数”ans(:,:,1)=1324ans(:,:,2)=5768ans(:,:,3)=911101243第43页,此课件共55页哦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(
25、A)dim_A=3size_A=234L_A=444第44页,此课件共55页哦2.10“非数”和“空”数组2.10.1非数NaN根据IEEE数学标准,0/0,0/,0*等运算都会产生非数(NotaNumber)。该非数在MATLAB中用NaN或nan记述。性质:(1)NaN参与运算所得的结果也是NaN,即具有传递性(2)非数没有大小的概念,即两个非数不能比较大小。45第45页,此课件共55页哦非数的功能(1)真实记述0/0,0/,0*运算的结果(2)避免可能因为0/0,0/,0*运算而造成程序执行的中断(3)在数据可视化中,用来剪裁图形46第46页,此课件共55页哦2.10.2“空”数组“空”
26、数组由MATLAB的生成器确定,并有它自己的特性。空数组是简单的,它们是MATLAB大小为零的变量。“空”数组的功能:(1)在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”(2)运用“空”数组对其他非空数组赋值,可以改变数组得大小,但不能改变数组得维数。47第47页,此课件共55页哦2.11关系操作和逻辑操作关系操作符逻辑操作符关系与逻辑函数各种运算符的优先级48第48页,此课件共55页哦(1)关系操作符关系运算符该运算符的功能关系运算符该运算符的功能=大于等于大于=等于=小于等于=约等于关系操作符及其功能49第49页,此课件共55页哦(2)逻辑操作符逻辑操作符
27、功能&与|或非逻辑操作符及其功能50第50页,此课件共55页哦(3)关系与逻辑函数关系与逻辑函数及其功能关系和逻辑函数使用功能xor(s,t)异或运算,s或t非零(真)返回1,s和t都是零(假)或都是非零(真)返回0any(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1isequal(s,t)s和t对应元素相同时,相应元素位置取1,否则取051第51页,此课件共55页哦(4)各种运算符的优先级优先级运算符最高()(小括号).(转置)(共轭转置).(数组和数值乘方)(矩阵
28、乘方)+(一元加法)-(一元减法)(取反).*(乘法)*(矩阵乘法)./(右除)/(矩阵右除).(左除)(矩阵左除)+(加法)-(减法):(冒号)(小于)(大于)=()大于或等于 =(等于)=()不等于&(逻辑与)最低|(逻辑或)52第52页,此课件共55页哦【例1】关系运算示例。A=1:9,B=10-A,r0=(A4),r1=(A=B)A=123456789B=987654321r0=111000000r1=00001000053第53页,此课件共55页哦【例2】关系运算运用之一:求近似极限,修补图形缺口。t=-2*pi:pi/10:2*pi;y=sin(t)./t;tt=t+(t=0)*e
29、ps;%逻辑数组参与运算,使逻辑数组参与运算,使0元素被一个元素被一个“机器零机器零”小数代替小数代替yy=sin(tt)./tt;%用数值可计算的用数值可计算的 sin(eps)/eps近似代替近似代替sin(0)/0极限极限subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title(残缺图形残缺图形)subplot(1,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2)xlabel(t),ylabel(yy),title(正确图形正确图形)Warning:Dividebyzero.54第54页,此课件共55页哦55第55页,此课件共55页哦