《Matlab中的数组操作.ppt》由会员分享,可在线阅读,更多相关《Matlab中的数组操作.ppt(33页珍藏版)》请在三一办公上搜索。
1、MATLAB基础应用,第一章 Matlab中的数组操作,matlab中的运算和操作是以数组为对象的,数组又包括:数值数组、字符数组、元胞数组等。数值数组:(1)n元数值向量(行向量与列向量)(2)数值矩阵(3)由数值矩阵构成的元胞数组,几个标点符号的作用:逗号:用来将数组中的元素分开。(可用空格代替)分号:用来将矩阵中的行分开。(可用回车键代替)冒号:相当于文字中的省略号。中括号:界定数组的首与尾。,一、数组的建立1.直接输入法 matlab在创立数组时以逗号或空格表示分列,分号或回车表示分行。数组开头“”、结尾“”行数组:如a=1,2,3,8,-1 列数组:b=1;2;3;8;-1 或a 矩
2、阵:A=2,4,1;8:-2:4;2,4,6,2.通过数组编辑器生成矩阵 步骤:先建立空矩阵a=,然后在工作空间(workspace)中点开a进入数 组编辑器,输入元素。,3.用函数创建数组,定步长生成法:x=a:t:b(t步长,省略是为1);定数线性采样法:x=linspace(a,b,n),a与b是数组的第一个和最后一个元素,n是采样的总点数。,x=linspace(2,5,6),x=2.0000 2.6000 3.2000 3.8000 4.4000 5.0000,zeros(m):m阶全零方阵,zeros(m,n):mn阶全零方阵,eye(m):m阶单位阵,ones(m):m阶全1方阵
3、,ones(m,n):mn阶全1方阵,rand(m):m阶均匀分布随机方阵,randn(m):m阶正态分布随机方阵,4.元胞数组的创建,元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的量,每一个元素也可以具有不同的尺寸,每一个元素的内容也可以完全不同,元胞数组的元素叫做元胞。建立元胞数组:,a=matlab,20;ones(2,3),1:10,a=matlab 20 2x3 double 1x10 double,二、数组的操作 数组的编址:数组a建立后,a中各元素的编址方法如下:单下标编址:a(1)
4、表示a的第1个元素,a(n)表示a的第n个元素,对于二元数组按列优先原则进行单下标编址。双下标编址:a(2,3)表示矩阵a的第2行第3列元素。1.数组元素与子数组的提取 提取数组a的第3个元素:y=a(3)提取a的第3到7个元素:y=a(3:7),a=linspace(1,20,6),a=1.00 4.80 8.60 12.40 16.20 20.00,提取a的第1,3,5个元素构成数组b:b=a(1:2:5)提取a的第2到5个元素,并反转次序构成数组b1:b1=a(5:-1:2)按条件提取子数组:提取a的元素值大于10的元素构成数组b2 b2=a(find(a10),b1=16.2000 1
5、2.4000 8.6000 4.8000,b2=12.40 16.20 20.00,二维数组A的元素的提取:由于数组A有两种编址方法,matlab会根据接受的指令,先判断是哪一种编址方法,然后再进行元素的提取。如:A=1,2,3,4,5;0,1,2,3,4;-1,0,1,2,3;-2,-1,0,1,2,1 2 3 4 5 0 1 2 3 4-1 0 1 2 3-2-1 0 1 2,b1=A(5)b2=A(2,3)b3=A(2,:)b4=A(2,3)b5=A(2,:);A(1,:)b6=A(2,4,3,5),b1=2 b2=2 b3=0 1 2 3 4 b4=0,-1 b5=0 1 2 3 4
6、1 2 3 4 5,b6=2 4 0 2,b7=A(2,4,3,5,1),b7=2 4 0 0 2-2,元胞数组元素的提取:,()和 有着本质的区别,用于表示元胞的内容,()小括号表示指定的元胞。,a=matlab,20;ones(2,3),1:10;ones(4,5),eye(4),a=matlab 20 2x3 double 1x10 double 4x5 double 4x4 double,a=matlab 20 2x3 double 1x10 double 4x5 double 4x4 double,b=4x4 double,b=a(3,2),b=a3,2,b=1 0 0 0 0 1
7、0 0 0 0 1 0 0 0 0 1,a2,3=cell(2),改变元胞数组元素的元胞:赋值,a=matlab 20 2x3 double 1x10 double 2x2 cell 4x5 double 4x4 double,2.数组拼接与数组中的元素值的改变在命令窗口实验:a=1:2:11 a(1)=0 a(1:4)=2,-1,-2,-3 a(2,5)=1.5,0.5,x=0:2:10,y=-2,-5,-8,xx=x,y yy=xx(2,5);y(2:3),a=1 3 5 7 9 11 a=0 3 5 7 9 11 a=2-1-2-3 9 11 a=2 1.5-2-3 0.5 11,xx=
8、0 2 4 6 8 10-2-5-8 yy=2 8-5-8,x=0 2 4 6 8 10,y=-2-5-8,空数组的使用:建立空数组A:A=,空数组大小任意。可用空数组删除已有数组中的元素B=1:8B(1:2:5)=B=2 4 6 7 8A=2,3,4,5,6;1,2,3,4,5;0,1,2,3,4;-1,0,1,2,3删除矩阵A第3行:A(3,:)=删除矩阵A第2列:A(:,2)=,3.常用的数组操作命令,(1)确定数组大小命令A=2,5,1,-2,7;0,3,-1,-2,4;0,0,5,8,8求数组A行数与列数的最大值:n=length(A)提取数组A的行数与列数:m,n=size(A)(
9、2)排序命令将一维数组x的元素排序:x=3,-1,2,5,7,4,6,11,13,9,2,0,7,8b=sort(x),b,k=sort(x),b=-1 0 2 2 3 4 5 6 7 7 8 9 11 13k=2 12 3 11 1 6 4 7 5 13 14 10 8 9,(3)改变数组形状的命令 x=3,-1,2,5,7,4,6,11,13,9,2,8 将一维数组x按条件转化为矩阵:B=reshape(x,3,4),(4)数组的复制:c=1,2,5 c1=repmat(c,4,1)c2=repmat(c,1,4)c3=repmat(c,3,2)c4=repmat(c,3),B=3 5 6
10、 9-1 7 11 2 2 4 13 8,c3=1 2 5 1 2 5 1 2 5 1 2 5 1 2 5 1 2 5,(5)稀疏矩阵与满矩阵的转化:稀疏矩阵生成命令:sparse(a,b,c)数组a,b,c的大小必须相同 数组a与b分别指定元素的行标与列标,数组c指定元素的值 A=sparse(2,4,18,3,12,20,-5,-3,-8)创建稀疏矩阵A,A的(2,3),(4,12),(18,20)元素分别为-5,-3,-8,其余元素为零,A为1820阶矩阵。,将稀疏矩阵x变回满矩阵:A=full(A),A=(2,3)-5(4,12)-3(18,20)-8,(6)sum(A):矩阵A按列求
11、和,返回一个行向量;sum(A,2):矩阵A按行求和,返回一个列向量。max(A):返回由矩阵各列的最大值构成的向量。max(A,B):返回A与B对应元素最大值构成的矩阵 min(A),min(A,B)类似,创建1820稀疏矩阵A,使A的(2,3),(4,12),(15,16)元素分别为-5,-3,-8,其余元素为零?,A=sparse(2,4,15,18,3,12,16,20,-5,-3,-8,0),A=1,2,3,4,5;0,6,2,3,4;-1,0,7,2,3;2,-1,0,1,2,1 2 3 4 5 0 6 2 3 4-1 0 7 2 3 2-1 0 1 2,B=sum(A,2),B=
12、15 15 11 4,b1=max(A),b1=2 6 7 4 5,返回由矩阵A各行的最大值构成的列向量?,b2=max(A),b3=max(A,2)?,b3=2 2 3 4 5 2 6 2 3 4 2 2 7 2 3 2 2 2 2 2,b2=5 6 7 2,b=diag(A):提取方阵A的对角线元素构成列向量b,A=diag(b):用一维数组b的元素生成对角方阵A,(7)diag命令:,A=diag(b,k):b为一维数组,k为整数 将b元素作为偏离主对角线的第k条对角生成方阵A,b=2,3,-1,5,6,A=diag(b,1)B=diag(b,-2),A=0 2 0 0 0 0 0 0
13、3 0 0 0 0 0 0-1 0 0 0 0 0 0 5 0 0 0 0 0 0 6 0 0 0 0 0 0,B=0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0-1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 6 0 0,例1.1 输入n阶矩阵,n=input(输入方阵阶数n=)a1=4*ones(n,1);a2=2*ones(n-1,1);a3=ones(n-2,1);,A1=diag(a1)+diag(a2,1)+diag(a3,2);A2=diag(a2,-1)+diag(a3,-2);A=A1+A
14、2,(8)find命令:find(A)找出A的不为0的元素的下标 find(A,k)找出A的前k个不为0的元素的下标 find(A,k,last)找出A的后k个不为0的元素的下标 find(g(A),其中g(A)是数组A的逻辑表达式,返回数组A中满足条件g(A)的元素下标。,A=0,0,2,-1,3,0,0,5,0,6,-7,0,0,9;b1=find(A,3)b2=find(A,2,last),b1=3 4 5b2=11 14,B=0,1,0;2,3,0;4,0,0 c1=find(B)m,n=find(B),B=0 1 0 2 3 0 4 0 0,c1=2 3 4 5,m=2 3 1 2,
15、n=1 1 2 2,B=0,1,0;2,3,0;4,0,0 t=find(B2)x,y=find(B2)m,n=find(B=1&B=3),B=0 1 0 2 3 0 4 0 0,t=3 5,x=3 2,y=1 2,m=2 1 2,n=1 2 2,求连乘积 c1=prod(4:6)c2=cumprod(4:6),求组合nchoosek(a,k)D=nchoosek(5,2),D=10,M=3 2 3 1 3 7 2 1 2 7 1 7,N=wxy wxz wyz xyz,b=wxyz N=nchoosek(b,3),(9)排列组合,c1=120 c2=4 20 120,a=3,2,1,7;M=
16、nchoosek(a,2),求向量的全排列 perms(2,1,8),三、数组的运算,1.数值运算 数组的运算,也称点运算,是同阶数组对应分量的运算。包括点乘、点除和点乘方,对应的运算符号为.*,./.这些运算符的公共特点是在算符前加上一个英文句号,以便与对应的矩阵运算相区别。设A与B为同阶数的数组,k为常数,A+B,A-B,k*A A.*B,A./B,A.n,2.关系运算与逻辑运算关系运算:,等于:=,不等于:=,,小于:,,大于:,小于等于:=。,逻辑运算:与:&;或:|;非:。,关系运算返回值为0或1 如a=35,得a=0,例1.2 已知数组A=2,5,1,-2,7;0,3,-1,-2,
17、4;0,0,5,8,8,要求将A中大于4的元素减去2,小于0的元素加上1,其余元素不变构成矩阵B。,A=2,5,1,-2,7;0,3,-1,-2,4;0,0,5,8,8,A=2 5 1-2 7 0 3-1-2 4 0 0 5 8 8,B=2 3 1-1 5 0 3 0-1 4 0 0 3 6 6,B=A+(-2)*(A4)+(A0),例1.3 矩阵A=2,6,1,-12,7;0,3,4,-5,4;1,0,5,8,9,要求将A中能被3整除的元素保留其余元素不变构成矩阵B。,A=2,6,1,-12,7;0,3,4,-5,4;1,0,5,8,9,A=2 6 1-12 7 0 3 4-5 4 1 0
18、5 8 9,B=0 6 0-12 0 0 3 0 0 0 0 0 0 0 9,B=A.*(mod(A,3)=0),3.数组的集合运算,a=1:12;b=2:10;setdiff(a,b)(a与b的差集)得:1,11,12,intersect(a,b)(a与b的交集),得:2,3,4,5,6,7,8,9,10,union(a,b)(a与b的并集),四、矩阵的运算,1.矩阵的基本运算 数k与矩阵A的运算:k+A k*A 加法运算:A+B,A-B,(A与B为同阶矩阵)乘法运算:A*B(A为mk矩阵,B为kn矩阵)右除运算:A/B(A乘B的逆,B为可逆矩阵)左除运算:AB(A的逆乘B,A为可逆矩阵)幂
19、运算:若A为方阵,An为矩阵A的n次幂,2.基本矩阵函数,转置A,特征值eig(A),行列式 det(A),秩rank(A),逆inv(A),迹trace(A),,条件数cond(A),练习题输入一个矩阵A,提取A的第2行第1列的元素;提取A的第1,3,4列所有元素;让A的第1列和第3列互换;删除A的第1列。将矩阵A的第2行元素扩大2倍再增加3后作为A的第3行。求出数组x中所有奇数的和与所有的偶数和 x=8,3,5,-1,6,10,7,2,9,11,-4,-5,-1,12,11;4.生成5阶随机数矩阵,其中的随机数服从均值为20标准差为2的正态分布 5.生成一个1520阶的均匀分布随机矩阵A,并将A中大于0.5的元素换成0.56.生成一个20阶的方阵A,A中(2,3),(4,5),(8,6),(5,1),(12,2),(14,7),(15,12),(18,7)位置的均为3,其余元素为零.7.计算和式:,8.查寻fliplr命令的用法,并建立20阶的方阵,9.已知矩阵,求(1)A的逆矩阵(2)解方程组Ax=b(3)求A的特征值与特征向量,