《Matlab中的数组操作》由会员分享,可在线阅读,更多相关《Matlab中的数组操作(33页珍藏版)》请在金锄头文库上搜索。
1、 MATLABMATLAB基础应用基础应用第一章 Matlab中的数组操作matlab中的运算和操作是以数组为对象的,数组又包括:数值数组、字符数组、元胞数组等。 数值数组:(1)n元数值向量(行向量与列向量)(2)数值矩阵(3)由数值矩阵构成的元胞数组 几个标点符号的作用: 逗号:用来将数组中的元素分开。(可用空格代替) 分号:用来将矩阵中的行分开。 (可用回车键代替 ) 冒号:相当于文字中的省略号。 中括号:界定数组的首与尾。一、数组的建立 1.直接输入法matlab在创立数组时以逗号或空格表示分列,分号 或回车表示分行。数组开头“”、结尾“”行数组:如a=1,2,3,8,-1列数组: b
2、=1;2;3;8;-1 或a矩阵:A= 2,4,1;8:-2:4;2,4,62.通过数组编辑器生成矩阵步骤:先建立空矩阵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.0000zeros(m): m阶全零方阵 zeros(m,n): mn阶全零方阵 eye(m):
3、m阶单位阵 ones(m): m阶全1方阵 ones(m,n): mn阶全1方阵 rand(m): m阶均匀分布随机方阵 randn(m): m阶正态分布随机方阵 4.元胞数组的创建元胞数组是MATLAB的一种特殊数据类型, 可以将元胞数组看做一种无所不包的通用矩阵, 或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的 量,每一个元素也可以具有不同的尺寸,每一个元素 的内容也可以完全不同,元胞数组的元素叫做元胞。建立元胞数组: a=matlab,20;ones(2,3),1:10a = matlab 202x3 double 1x10 double二、数组的操作数组的编址:数组a建立
4、后,a中各元素的编址方法如下:单下标编址:a(1)表示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的元素构成数组b
5、2b2=a(find(a10)b1 = 16.2000 12.4000 8.6000 4.8000b2 = 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 50 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=2b
6、3=0 1 2 3 4b4=0,-1b5= 0 1 2 3 41 2 3 4 5b6= 2 40 2b7=A(2,4,3,5,1) b7= 2 4 00 2 -2元胞数组元素的提取: ()和 有着本质的区别, 用于表示元胞的内容, ()小括号表示指定的元胞。a=matlab,20;ones(2,3),1:10;ones(4,5),eye(4)a = matlab 202x3 double 1x10 double4x5 double 4x4 doublea = matlab 202x3 double 1x10 double4x5 double 4x4 doubleb = 4x4 doubleb=
7、a(3,2)b=a3,2b =1 0 0 00 1 0 00 0 1 00 0 0 1a2,3=cell(2)改变元胞数组元素的元胞:赋值 a = matlab 20 2x3 double 1x10 double 2x2 cell4x5 double 4x4 double 2.数组拼接与数组中的元素值的改变 在命令窗口实验:a=1:2:11a(1)=0a(1:4)=2,-1,-2,-3 a(2,5)=1.5,0.5x=0:2:10, y=-2,-5,-8,xx=x,yyy=xx(2,5);y(2:3) a= 1 3 5 7 9 11a= 0 3 5 7 9 11a= 2 -1 -2 -3 9
8、11a= 2 1.5 -2 -3 0.5 11xx = 0 2 4 6 8 10 -2 -5 -8 yy = 2 8-5 -8x = 0 2 4 6 8 10 y = -2 -5 -8空数组的使用: 建立空数组A: A= ,空数组大小任意。可用空数组删除已有数组中的元素 B=1:8 B(1:2:5)= B = 2 4 6 7 8 A=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
9、 求数组A行数与列数的最大值:n=length(A) 提取数组A的行数与列数:m,n=size(A) (2)排序命令 将一维数组x的元素排序: x=3,-1,2,5,7,4,6,11,13,9,2,0,7,8 b=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,5c1=repmat(c,4,1)
10、c2=repmat(c,1,4)c3=repmat(c,3,2)c4=repmat(c,3)B =3 5 6 9-1 7 11 22 4 13 8c3 =1 2 5 1 2 51 2 5 1 2 51 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=fu
11、ll(A)A = (2,3) -5(4,12) -3(18,20) -8(6) sum(A):矩阵A按列求和,返回一个行向量;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
12、 3 4 50 6 2 3 4-1 0 7 2 32 -1 0 1 2 B=sum(A,2)B =1515114b1=max(A)b1 =2 6 7 4 5返回由矩阵A各行的最大值构成的列向量?b2=max(A)b3=max(A,2) ?b3 = 2 2 3 4 52 6 2 3 42 2 7 2 32 2 2 2 2b2 = 5672b=diag(A): 提取方阵A的对角线元素构成列向量bA=diag(b): 用一维数组b的元素生成对角方阵A(7)diag命令 :A=diag(b,k): b为一维数组,k为整数将b元素作为偏离主对角线的第k条对角生成方阵A b=2,3,-1,5,6,A=di
13、ag(b,1)B=diag(b,-2)A =0 2 0 0 0 00 0 3 0 0 00 0 0 -1 0 00 0 0 0 5 00 0 0 0 0 60 0 0 0 0 0B =0 0 0 0 0 0 00 0 0 0 0 0 02 0 0 0 0 0 00 3 0 0 0 0 00 0 -1 0 0 0 00 0 0 5 0 0 00 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+A2(8) find命令:find(A) 找出A的不为0的元素的下标find(A,k) 找出A的前k个不为0的元素的下标find(A,k,last)找出A的