Matlab中的数组操作.ppt_第1页
Matlab中的数组操作.ppt_第2页
Matlab中的数组操作.ppt_第3页
Matlab中的数组操作.ppt_第4页
Matlab中的数组操作.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

MATLAB基础应用,第一章 Matlab中的数组操作,matlab中的运算和操作是以数组为对象的, 数组又包括:数值数组、字符数组、元胞数组等。 数值数组:(1)n元数值向量(行向量与列向量) (2)数值矩阵 (3)由数值矩阵构成的元胞数组,几个标点符号的作用: 逗号:用来将数组中的元素分开。(可用空格代替) 分号:用来将矩阵中的行分开。 (可用回车键代替) 冒号:相当于文字中的省略号。 中括号:界定数组的首与尾。,一、数组的建立 1.直接输入法 matlab在创立数组时以逗号或空格表示分列,分号或回车表示分行。数组开头“”、结尾“” 行数组:如a=1,2,3,8,-1 列数组: b=1;2;3;8;-1 或a 矩阵: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方阵,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)表示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 12.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 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 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 = 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: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 求数组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 13 k = 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 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按列求和,返回一个行向量; 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 = 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 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+A2,(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 5 b2=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,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=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,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 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论