版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、矩阵运算与数组运算,第1章,第1章 矩阵运算与数组运算,1.1 变量和数据 1.2 矩阵和数组 1.3 稀疏矩阵 1.5元胞数组和结构数组,矩阵是MATLAB最基本、最重要的数据对象,其大部分运算均是基于矩阵的运算。 一般情况下,要求矩阵的每个元素必须具有相同的数据类型。 和其他计算机语言相似,其数据类型是可以进行转换的。,1.1 变量和数据,MATLAB7.3定义了15种基本的数据类型 ,包括整型、浮点型、字符型和逻辑型等 。,1.1.1 数据类型,1.1.2 数据,1. 数值的表达方式 数值采用十进制表示,可以用带小数点的形式直接表示,也可以用科学计数法,数值的表示范围是10-308103
2、08 。 例如: -2, 5.67, 2.56e-56(表示2.5610-56), 4.68e204(表示4.6810204),2. 矩阵和数组的概念,标量(Scalar):是指11的矩阵,即只含一个数的矩阵。 向量(Vector):是指1n或n1的矩阵,即只有一行或者一列的矩阵。 矩阵(Matrix):是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,00矩阵为空矩阵()。 数组(Array):是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。,3.复数(Complex),复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。 z=a+b*i或z=a+
3、b*j z=a+bi或z=a+bj(当b为常量时) z=r*exp(i*theta) 得出一个复数的实部、虚部、幅值和相角。 a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 t=angle(z) %计算相角,1.1.3 变量(Variables),变量名区分字母的大小写。 变量名不能超过63个字符,第63个字符后的字符被忽略。 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。 关键字(如if、while等)不能作为变量名。,1. 变量的命名规则,2. 特殊变量,i=j=,变量=表达式 表达式
4、 第一种形式:和C语言类似,先计算右边表达式的值,然后将其赋给左边的变量。 第二种形式:将表达式值赋给MATLAB预定义变量ans。 语句后可加分号,也可不加分号 表达式的书写规则同C语言 以“%”开头,其后内容为注释内容,3. 赋值语句,1.2 矩阵和数组,MATLAB最基本、最重要的功能就是进行实数或复数矩阵的运算。,1.2.1 矩阵输入,(1) 矩阵元素应用方括号()括住; (2) 每行内的元素间用逗号或空格隔开; (3) 行与行之间用分号或回车键隔开; (4) 元素可以是数值或表达式。,矩阵表示应遵循以下基本常规:,例如: c=1 2;3 4;5 3*2 表示构成矩阵,分号分隔行,空格
5、分隔元素,1. 通过显式元素列表输入矩阵,使用from:step:to方式生成向量from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1。,2. 通过语句生成矩阵,当step省略时则默认为step=1; 当step省略或step0而fromto时为空矩阵,当 step0而fromto时也为空矩阵。,x1=2:5 x1 = 2 3 4 5 x2=2:0.5:4 x2 = 2.0000 2.5000 3.0000 3.5000 4.0000 x4=2:-1:3%空矩阵 x4 = Empty matrix: 1-by-0 x5=2:-1:0.5 x5 = 2 1
6、x6=1:2:5;1:3:7%两行向量构成矩阵 x6 = 1 3 5 1 4 7,使用linspace和logspace函数 linspace(a,b,n) a、b、n分别表示开始值、结束值和元素个数,n如果省略则默认值为100 生成从a到b之间线性分布的n个元素的行向量 logspace(a,b,n) a、b、n分别表示开始值10a 、结束值10b和数据个数n,如果省略则默认值为50 生成对数等分向量,EX: x1=linspace(0,2*pi,5) %从0到2*pi等分成5个点 x1 = 0 1.5708 3.1416 4.7124 6.2832 x2=logspace(0,2,3) %
7、从1到100对数等分成3个点 x2 = 1 10 100,3. 由矩阵生成函数产生特殊矩阵,X1=eye(2,3) X1 = 1 0 0 0 1 0 X2=eye(3,2) X2 = 1 0 0 1 0 0,EX:,全下标方式 一个mn的a矩阵的第i行第j列的元素表示为a(i,j)。 单下标方式 以mn的矩阵a为例,若元素a(i,j)则对应的“单下标”为s= (j-1)mi。,1.2.2 矩阵元素,1. 矩阵的下标(Subscript),MATLAB利用矩阵下标可以产生子矩阵,2. 子矩阵块的产生(Multiple elements),有一个矩阵A:,矩阵的一个元素。,如果i,j是向量时, a
8、(i,j)表示,如果i,j是标量时, 则a(i,j)表示,矩阵的一个子矩阵块。,A = 1 2 3 4 5 6 7 8 9 10 11 12,Example:,A=1 2 3 4;5 6 7 8;9 10 11 12;,A(1 2,3 4),A(1:3,2:3),ans = 2 3 6 7 10 11,ans = 3 4 7 8,A = 1 2 3 4 5 6 7 8 9 10 11 12,Example:,A=1 2 3 4;5 6 7 8;9 10 11 12;,A(:,2:3 ),A(1:3,end),ans = 2 3 6 7 10 11,ans = 4 8 12,A = 1 2 3
9、4 5 6 7 8 9 10 11 12,Example:,A(1 3;2 6),ans = 1 9 5 10,取单下标1,3,2,6,A(1 3:4 6),ans = 1 9 2 10,子矩阵也可以利用逻辑矩阵(logical matrix)来标识。,逻辑矩阵是大小和对应矩阵相同的,而元素值为0或1的矩阵,用a(l1,l2)来表示,其中l1,l2为逻辑向量,当l1,l2元素为0则不取该位置元素,反之,取该位置的元素。,Example:,A = 1 2 3 4 5 6 7 8 9 10 11 12,l1=logical(1 0 1),l2=logical(1 1 0),A(l1, l2),an
10、s = 1 2 9 10,取出1,3行且1,2列的元素,3. 矩阵的赋值,矩阵的赋值有:全下标方式、单下标方式和全元素方式。,全下标方式:a(i,j)=b,给a矩阵的部分元素赋值则b矩阵的行列数必须等于a矩阵的行列数。 clear a a(1:2,1:3)=1 1 1;1 1 1 %给第一、二行元素赋值为全1 a = 1 1 1 1 1 1,单下标方式:a(s)=b,b为向量,元素个数必须等于a矩阵的元素个数。 a(5:6)=2 3 %给第5、6元素赋值 a = 1 1 2 1 1 3,全元素方式:a(:)=b,给a矩阵的所有元素赋值则b矩阵的元素总数必须等于a矩阵的元素总数,但行列数不一定相
11、等。,a=1 2;3 4;5 6 a = 1 2 3 4 5 6 b=1 2 3;4 5 6 b = 1 2 3 4 5 6 a(:)=b %按单下标方式给a赋值 a = 1 5 4 3 2 6,EX:a=1 2 0;3 4 0;5 6 9 a = 1 2 0 3 4 0 5 6 9,a(:,3)= %删除一列元素 a = 1 2 3 4 5 6,a(1)= %删除一个元素,则矩阵变为行向量 a = 3 5 2 4 6,a= %删除所有元素为空矩阵 a = ,4. 矩阵元素的删除 可以对矩阵的单个元素、子矩阵块和所有元素赋值为空矩阵进行删除操作 ,就是简单地将其赋值为空矩阵(用表示)。,5.
12、生成大矩阵(Concatenating Matrices) 可以通过方括号“”实现将小矩阵生成一个较大的矩阵。 注:a;a 与a,a的区别,EX:a=1 2 0;3 4 0;5 6 9 a = 1 2 0 3 4 0 5 6 9,a;a %联接成63的矩阵 ans = 1 2 0 3 4 0 5 6 9 1 2 0 3 4 0 5 6 9,a(1:2,1:2) 10*a(1:2,2:3) %计算并联接 ans = 1 2 20 0 3 4 40 0,a a %联接成36的矩阵 ans = 1 2 0 1 2 0 3 4 0 3 4 0 5 6 9 5 6 9,可以通过矩阵翻转函数对矩阵进行翻转
13、。,a = 1 2 0 3 4 0 5 6 9,6. 矩阵的翻转,a = 1 2 0 3 4 0 5 6 9,a = 1 2 0 3 4 0 5 6 9,a = 1 2 0 3 4 0 5 6 9,1.2.3矩阵和数组运算,1. 矩阵运算的函数,det(X):计算方阵行列式 rank(X):求矩阵的秩。 inv(X):求矩阵的逆阵。 inv(X)=X-1 v,d=eig(X):计算矩阵特征值和特征向量 diag(X):产生X矩阵的对角阵,a = 1 2 3 4 5 6 7 8 9,2. 矩阵和数组的算术运算,矩阵和数组的加(addition)、减运算(subtraction) 矩阵加、减运算表
14、达式分别为”A+B”、”A-B”。 矩阵和数组的乘法运算(muliplication) 矩阵的乘法运算表达式为”A*B” 。矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。 数组的乘法运算表达式为”A.*B” ,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。,矩阵和数组的除法(division),矩阵的除法运算表达式有两种: ” AB”和” A/B”, 分别表示左除和右除。 X=AB是方程A*X=B的解,AB=A-1*B。 X=B/A是X*A=B的解,B/A=B*A-1。,数组的除法运算表达式有两种:” A.B”和”A./B”,表示数组相应元素左除和右除
15、。 注:A和B数组必须大小相同,除非其中有一个是标量。,【例】已知方程组, 用矩阵除法来解线性方程组。, X=AB X = 2 -1 0,将该方程变换成AX=B的形式。 A=2 -1 3;3 1 -5;4 -1 1 B=5;5;9 X=AB,矩阵和数组的乘方(power) 矩阵乘方的运算表达式为”AB”,其中A可以是矩阵或标量。 数组乘方的运算表达式”A.B ” 。,矩阵的转置运算表示为A 如果矩阵A是复数矩阵,则为共轭转置 数组的转置运算表示为A. 如果数组A是复数数组,则不是共轭转置。,3. 矩阵和数组的转置(transpose),【例】矩阵和数组的除法和乘方运算。,x1=1 2;3 4;
16、 x2=eye(2) x2 = 1 0 0 1 x1/x2 %矩阵右除 ans = 1 2 3 4 inv(x1) %求逆矩阵 ans = -2.0000 1.0000 1.5000 -0.5000,x1x2 %矩阵左除 ans = -2.0000 1.0000 1.5000 -0.5000 x1./x2 %数组右除 Warning: Divide by zero. (Type warning off MATLAB:divideByZero to suppress this warning.) ans = 1 Inf Inf 4,x1.x2 %数组左除 ans = 1.0000 0 0 0.2
17、500 x12 %矩阵乘方 ans = 7 10 15 22 x1-1 %矩阵乘方,指数为-1与inv相同 ans = -2.0000 1.0000 1.5000 -0.5000,2.x1 %数组乘方 ans = 2 4 8 16,x1.x2 %数组乘方 ans = 1 1 1 4,【例】矩阵和数组的转置运算。,A=1 2;3 4; A ans = 1 3 2 4,A %矩阵转置 ans = 1.0000 2.0000 3.0000 - 4.0000i 4.0000,A. %数组转置 ans = 1.0000 2.0000 3.0000 + 4.0000i 4.0000,A=1 2 3+4*i
18、 4;,MATLAB中exp、sqrt、sin、cos等数学函数可以直接使用在数组上,这些运算是分别对数组的每个元素进行运算。 expm、sqrtm、logm等数学函数用于矩阵运算。,4. 矩阵和数组的数学函数,5. 关系操作和逻辑操作,关系运算(relational operators),关系运算规则: 如果两个标量,则结果为真(1)或假(0)。 如果比较的两个数组变量,则必须大小相同,数组的元素为0或1。 如果比较一个数组和一个标量,则把数组的每个元素分别与标量比较。 、=仅对变量的实部进行比较,而= = 和 = 则同时对实部和虚部进行比较。,关系操作符有:、=、 =(等于)、 =(不等于
19、)。,逻辑运算(Logical Operators),逻辑操作符有: y=sin(t) %计算正弦曲线y = Columns 1 through 6 0 0.8660 0.8660 0.0000 -0.8660 -0.8660 Columns 7 through 10 -0.0000 0.8660 0.8660 0.0000 t1=(t2*pi) t1 = 1 1 1 0 0 0 0 1 1 1,【例】数组的关系与逻辑运算,y1=t1.*y %得出0和23的半波整流y1 = Columns 1 through 6 0 0.8660 0.8660 0 0 0 Columns 7 through
20、10 0 0.8660 0.8660 0.0000,6. 运算符优先级,在MATLAB中各种运算符的优先级如下: (矩阵转置)、(矩阵幂)和.(数组转置)、.(数组幂) (逻辑非) *(乘)、/(左除)、(右除)和.*(点乘)、./(点左除)、.(点右除) +、-(加减) : (冒号) 、=、= 3 4 a(:,:,1)= 0 0 0 0 a(:,:,2)= 1 2 3 4,b=1 1;2 2 b= 1 1 2 2 b(:,:,2)=5 b(:,:,1)= 1 1 2 2 b(:,:,2)= 5 5 5 5,通过“全下标”元素赋值方式创建,由函数ones、zeros、rand和randn直接创
21、建,EX: 用函数rand直接创建三维随机数组 rand(2,4,3) ans(:,:,1)= 0.0274 0.8276 0.1682 0.1301 0.9601 0.4917 0.9761 0.2748 ans(:,:,2)= 0.1479 0.5472 0.1007 0.3846 0.3808 0.9298 0.9494 0.2671 ans(:,:,3)= 0.5781 0.6993 0.7838 0.6935 0.5919 0.1170 0.9728 0.3387,1.3稀疏矩阵(补充),1.3.1稀疏矩阵的建立,目的:稀疏矩阵大部分的元素都是0,因此只需储存非零元素的下标和元素值,
22、这种特殊的存储方式可节省大量的存储空间和不必要的运算。,建立方法: 使用sparse函数产生稀疏矩阵 用spdiags函数创建稀疏矩阵 用spconvert函数从外部文件输入稀疏矩阵,sparse函数用于创建稀疏矩阵,或将一个全元素矩阵直接转换成稀疏矩阵。 例:A=1 0 0 0;0 5 0 0;1 0 0 0 A1=sparse(A),1.使用sparse函数产生稀疏矩阵,A = 1 0 0 0 0 5 0 0 1 0 0 0,A1 = (1,1) 1 (3,1) 1 (2,2) 5,在MATLAB中,稀疏的相关函数: sparse(m,n):生成一个mn的所有元素都是0的稀疏矩阵。 spa
23、rse(u,v,S) :u,v,S是3个等长的向量。S是要建立的稀疏矩阵的非0元素,u(i)、v(i)分别是S(i)的行和列下标,该函数建立一个max(u)行、max(v)列并以S为稀疏元素的稀疏矩阵。 u,v,S=find(A):返回矩阵A中非0元素的下标和元素。这里产生的u,v,S可作为sparse(u,v,S)的参数。 full(A):返回和稀疏存储矩阵A对应的完全存储方式矩阵。,EX1: u=2 3 5; v=1 6 2; S=1 1 1; A=sparse(u,v,S),A = (2,1) 1 (5,2) 1 (3,6) 1,ans = 0 0 0 0 0 0 1 0 0 0 0 0
24、 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0,EX2: u,v,S=find(A),EX3: full(A),对于1个只包含实数mn的稀疏矩阵,含有nnz个非零元素,MATLAB使用3个内部数组来存储此稀疏矩阵的信息: 第1个数组:以double方式储存了nnz个非零元素,使用空间为8nnz (Byte) 。 第2个数组:以整数方式储存了nnz个非零元素,每个元素的行下标使用空间为4nnz(Byte) 第3个数组:以整数方式储存了n个列每个列的起始指针,使用的空间为4n (Byte)。 第4个数组:复数稀疏矩阵要以double方式储存nnz个非零元素的虚数部分。 整
25、个稀疏矩阵占用的空间为8nnz4nnz4n4 (Byte)。,1.3.2稀疏矩阵的存储空间,EX:, a=1 0 0 0;2 0 1 0;0 0 0 3;0 5 0 0; b=sparse(a); whos Name Size Bytes Class a 4x4 128 double b 4x4 80 double,1.4元胞数组和结构数组,元胞数组中的基本组成是元胞,每一个元胞可以看成是一个单元(Cell),用来存放各种不同类型的数据,如矩阵、多维数组、字符串、元胞数组以及结构数组。,1.4.1元胞数组(Cell Array),1、元胞数组的创建,直接使用创建。,EX:,A=This is
26、the first Cell.,1 2;3 4;eye(3),Tom,Jane A= 1x23 char 2x2 double 3x3 double 1x2 cell whos Name Size Bytes Class Attributes A 2x2 716 cell,1、元胞数组的创建,由各元胞创建。, B(1,1)=This is the second cell. B = This is the second cell. B(1,2)=5+3*i B = 1x24 char 5.0000 + 3.0000i B(1,3)=1 2;3 4;5 6 B = 1x24 char 5.0000
27、 + 3.0000i 3x2 double,EX:,2、元胞数组的内容显示,使用celldisp命令显示元胞数组的内容, celldisp(B) B1 = This is the second cell. B2 = 5.0000 + 3.0000i B3 = 1 2 3 4 5 6,3、元胞数组的内容获取,(1) 取元胞数组的元素内容,EX:,取出A(1,2)元胞元素的内容以及矩阵中的元素内容, x1=A1,2 x1 = 1 2 3 4 x2=A1,2(2,2) x2 = 4,A=This is the first Cell.,1 2;3 4;eye(3),Tom,Jane,3、元胞数组的内容获取,(2) 取元胞
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理信息化实施方案
- 2025湖北襄高城市更新投资有限公司招聘考试总及笔试历年备考题库附带答案详解
- 项目施工人员岗位职责管理方案
- 起重机基础施工方案
- 公司销售业绩监控方案
- 2026年上半年四川事业单位统考四川省政府政务服务和公共资源交易服务中心及所属事业单位招聘4人考试参考题库及答案解析
- 公司高效沟通管理机制方案
- 2026四川成都市泡桐树中学教师招聘考试备考试题及答案解析
- 2025年安徽省农垦集团有限公司所属企业高层次人才招聘6名笔试历年备考题库附带答案详解
- 公司财务审查与审批制度方案
- 2026四川宜宾发展产城投资有限公司及子公司第一批员工招聘35人考试参考试题及答案解析
- 瘢痕课件教学课件
- GJB3243A-2021电子元器件表面安装要求
- 过程控制-方康玲主编-课后习题答案
- 开关电源及其软开关技术
- 心肌细胞动作电位与心电图的关系
- 铁路桥梁检定规范
- 瓦斯隧道安全技术交底
- 粉末涂料基础化学导论课件
- 山东省行政事业单位内部控制手册
- PPT模板:增强法制观念反校园欺凌房欺凌主题班会课件
评论
0/150
提交评论