matlab矩阵数组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 冒号表达式的一般格式为: • X=J:INC:K • ①J 表示第一个元素,K表示最后一个元素, INC表示元素递增的步长 • ②都用:隔开 • ③如果省略INC,则按默认步长为1 • ④INC为正,则要求K>J,INC为负,则要 求J>K • 如: x=1:0.01:1.1
• • • •
3.使用函数linspace或logspace创建向量 linspace是用来产生线性间隔向量的函数 用法: x=linspace(x1,x2,n) x1 第一个元素,x2 最后一个元素,n为元 素的个数。该函数将根据n的数值计算元素 之间的间隔, (x2-x1)/(n-1)。如省略n,为 100。 • 如: linspace(1,2,5) • linspace(1,2)
9 16 25
• ans = • 1 4
• >>x*x’ • 55 • >>x’*x
结果是?
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25
• • • • • • • • • • •
例: >>A=[1 2; 3 4] >>B=[5 6; 7 8] >>A*B ans = 19 22 43 50 >>A.*B ans = 5 12 21 32
tril(A), trilu(A) A的主对角线的(下)上三角矩阵
介绍几个矩阵变换常用命令
命令格式
flipud(A)
功能
矩阵A上下翻转
fliplr(A)
rot90(A) rot90(A,K)
矩阵A左右翻转
矩阵A逆时针旋转90度 矩阵A逆时针旋转k个90度
reshape(A,m,n) 将矩阵A重新排列成m*n的矩阵输 出,各元素在矩阵中的序号不变
四、索引
• 访问和操作向量或矩阵元素的方法: • 就是利用矩阵或向量元素的索引来完成 相应的操作。(注意:在Matlab中,矩阵 的索引起始数值为1,而在C语言中数组索 引下标的起始值为0)
• 1.向量元素的访问 • 访问向量的元素只要使用相应元素的索引即 可。例: • >>A=[1 2 3 4 5 6 7 8 9] %创建一个行向量 • >>A(3) • >>A([1 3 7]) %访问向量的第1 3 7个元素 • >>A([end-3:end]) %访问最后四个元素 • >>A([1:5,5:-1:1]) %重复访问向量的元素
A(i,j) A(I,J) A(i,:)
A(:,j) A(:)
访问矩阵A的第i行第j列的元素 访问由向量I(决定行)和J(决定列)指定的元素 访问矩阵A中第i行的所有元素
访问矩阵A中第j列的所有元素 访问矩阵A中所有元素,将矩阵看作一个(列)向量
A(l)
A(L)
使用单下标的形式访问矩阵元素,l为标量
求矩阵的迹(对角线元素之和,也等于矩阵特征值之和) 对矩阵进行奇异值求解 求矩阵的范数 测量矩阵的尺寸大小 测量矩阵各维的最大值 二者关系 length()=max(size())
• 矩阵的除法有两种运算:左除(\)和右除(/)。 • 如果A是非奇异的方阵,则A\B和B/A都可以 实现。 A\B等效于A的逆左乘B,即inv(A)*B, 而B/A等效于A的逆右乘B,即B*inv(A)。 • 一般来说: X=A\B是方程A*X=B的解,而 X=B/A是方程X*A=B的解。对于矩阵运算, 一般A\B不等于B/A。 • 线性方程组求解
ቤተ መጻሕፍቲ ባይዱ
• 说明: • 访问向量元素的结果是创建新的向量。 • 访问向量的元素可以直接用元素在向量中 的序号,元素的序号不仅可以是单一的整 数,还可以是元素序列号组成的向量。 • 关键字end在访问向量元素时,表示最后一 个元素的序号。
• • • •
对向量元素的赋值: >>A(3)=-3 >>A(15)=-15 原先11~15号元素不存在,所以在赋值后, 会自动创建这些元素,对于没有明确赋值 的元素,则默认为0。
• logspace和linspace的用法一样,用来创建 对数间隔的向量。 • 如: logspace(1,2,5) 与linspace比较 • 以上创建的都是行向量,如果要创建列向量, 在各个元素之间用分号;隔开,或对行向量进 行转置运算。转置运算符为单引号’。 • 如: x=[1;2;3;4] 4个元素的列向量 • A=linspace(1,2,5) 先创建一个行向量 • B=A’ 对A进行转置运算,结果赋给B
• 赋值操作 matlab中赋值有两种格式: (1) 变量=表达式 ( = 赋值运算) (2) 表达式 对第二种形式,会将表达式的值赋给 Matlab的预定义变量ans。 如: x=4+cos(50) sin(50)
• 经常使用的几个常量: pi 圆周率 inf 无穷大,负无穷大可以表示为-inf Nan 代表“非数值量 ”,如0/0或inf/inf的结果。 eps 机器零阈值,若变量的绝对值小于eps, 则可以认为这个量为零 i和j 如果i和j不被定义,则表示虚数单位。
• 点运算还包括点左除(.\),点右除(./), 点乘方(.^)。该运算在Matlab中起着很重 要的作用。 • 如:当x是一个向量时,求其各元素的5次 方,不能直接写成x^5,而必须写成x.^5。 • 特别注意:点运算要求两个矩阵或向量的 维数相同。(是对应元素之间的操作)
稀疏矩阵
• 在实际工作中经常会遇到这样一类矩阵,这 类矩阵中数值为0的元素比较多(如单位矩 阵),这类矩阵一般被称为稀疏矩阵。如果 使用满阵的方式来表示稀疏矩阵,则0元素 将占用相当多的内存空间,尤其是在matlab 中,由于matlab默认数据类型为双精度,每 个双精度的数据元素要占用8个字节空间, 当0元素很多时,将占用很多的内存空间。 因此,在matlab中专门提供了稀疏矩阵的表 示方法。
功能 创建n阶全零矩阵 创建m*n全零矩阵 n阶全1矩阵 m*n的全1矩阵 n阶单位矩阵,n=1时可省 n阶均匀分布的随机矩阵 m*n均匀分布的随机矩阵 n阶正态分布的随机矩阵 m*n正态分布的随机矩阵 n阶魔方矩阵
• • • • • •
例子: >>ones(4) >>magic(4) >>rand(3,4) >>A=magic(4) >>tril(A)
b11 b12 B= b21 b22 b 31 b32 b13 b23 b33
二、创建向量
• 向量也就是一维数组,在Matlab中创建向 量有以下几种方法: • 1.直接输入 • 将元素用方括号括起来,各元素之间用空 格或逗号隔开。 • 如:x=[1 2 pi 3+4i]或x=[1,3,4] • 2.利用冒号运算符:创建向量 • 如:x=1:10 创建一个有10个元素的向量x
• 2.矩阵元素的访问 • 对于矩阵元素的访问也需要使用矩阵元素 的索引,不过它是有两种方式: • (1) 使用矩阵元素的行列全下标的形式; • (2)使用单下标的形式。
• • • • • •
例:先创建一个魔方矩阵A >> A=magic(5) >>A(2,4) %全下标的形式 是哪个元素? >>A(9) %单下标的形式,是哪个? (1)全下标是矩阵元素的行号、列号 (2)单下标是矩阵元素在内存中存储的序号, 在Matlab中矩阵元素的排列是以列元素优先 排列,和C语言不同。所以上个例子 A(9)=A(4,2)
A’ A^n A*B A/B A\B A+/-B
说明
矩阵转置 矩阵求幂 矩阵相乘 矩阵右除 矩阵左除 矩阵加减
inv
det rank
矩阵求逆,注意不是所有矩阵都有逆矩阵(方阵或满秩的阵)
求方阵的行列式 求矩阵的秩
[V,D]=eig
trace svd Norm size length
求矩阵的特征向量和特征值
• 3.点运算 • 点运算是大小相等的矩阵或向量之间各元 素一一对应的运算,是它们对应元素的直 接运算,如C=A.*B表示A矩阵和B矩阵的相 应元素之间直接进行乘法运算(点乘.*), 然后将结果赋值给C矩阵,这和矩阵的乘积 是不同的。
• • • •
例: >> x=1:5; 创建一个向量 >> x*x 结果是? 出错 >> x.*x
三、创建矩阵
• 一般的矩阵具有m行n列(m×n),和二维数组 是同一个概念。 • 创建矩阵的方法: • 1.第一种直接输入法: • 适合创建矩阵的行、列比较少的矩阵。 • 如: A=[1 2 3;4 5 6;7 8 9;] • 注:①整个矩阵的元素必须在[ ]之内。 • ②行与行之间要用分号;隔开,或者在需 要分行的地方用回车键。 • ③元素之间可以用空格或逗号间隔。
16 5 0 11 0 0 0 0
特殊矩阵的生成函数
diag compan hilb inhilb pascal magic
获取矩阵的对角线元素,也可以生成对角矩阵
产生伴随矩阵 产生希尔伯特矩阵 希尔伯特逆矩阵 产生帕斯卡矩阵(即杨辉三角) 产生魔方矩阵
vander
meshgrid
产生万达摩方阵
产生三维绘图基底坐标平面输出矩阵
访问由向量L指定的矩阵元素,向量L中的元素为矩阵 元素的单下标数值
五、矩阵的运算
• 1.前面已经介绍了很多矩阵的生成函数,不 再重复。 • 2.矩阵的基本运算 • 对于矩阵的运算,Matlab提供了若干函数 和基本的运算规则,这些规则和函数分别 和线性代数中的概念和运算规则是对应的, 如下表 :
运算
• 2.利用数组编辑器 • 创建一数值型的变量后,在工作空间 (workspace)中,双击该变量,会打开一个 数组编辑器,在该编辑器中可随意修改该 变量。
• 3.利用特殊矩阵生成函数创建 • 对于某些特殊矩阵,Matlab提供了专用命 令,如:
命令格式 zeros(n) zeros(m,n) ones(n) ones(m,n) eye(n) rand(n) rand(m,n) randn(n) randn(m,n) magic(n)
创建稀疏矩阵
• >>A=eye(5) %五阶的单位矩阵 • >>B=sparse(A) %用sparse构造为稀疏矩阵
• >>whos %可以比较A,B占用内存空间 • >>full(B) %用full函数将稀疏矩阵还原成满阵
多维矩阵
• 多维矩阵(数组),就是下标数超过了两 个的数组。常用的为三维矩阵,更高维的 用到的机会较少。 • 习惯上将第一维称为行,第二维称为列, 第三维称为页。要注意的是,第三维数的 页上,每一页的数组必须具有相同的行, 列。
• (3)单下标和全下标之间的转换 • Matlab提供了两个函数可以完成它们之间 的转换: • sub2ind 由全下标→单下标 sub2ind(size(A),i,j) i,j 全下标 • ind2sub 由单下标→全下标 [i,j]=ind2sub(size(A),IND) IND单下标
• 其他引用矩阵元素的方法:
2.数组 数组就是有序数列的集合。 数组的每一个元素都属于同一种类型,它 们使用同一个数组名和不同的下标来唯一 确定数组中的成员。下标是指数组元素在 数组中的序号。
3.向量 从编程语言的角度,向量就是一维数组, 从数学的角度看,向量就是1×N或N×1的 矩阵,即行向量或列向量。
4.矩阵 在Matlab中,矩阵的概念和线性代数中 定义的矩阵的概念是一样的。矩阵使用一 对圆括号或方括号括起来,符合一定规则 的数学对象。如:
• 创建多维数组也有两种方法: • 1.直接赋值的方法 • 2.使用Matlab提供的函数创建
1.直接赋值的方法
• • • • • >>A=pascal(4); >>A(:,:,2)=eye(4); >>A(:,:,3)=magic(4); 创建了一个三维矩阵,由三页构成。 如果>>A(:,:,3)=magic(5),由于维数不匹配 系统将报错! • 或者>>B(3,3,3)=1 也可以创建一个三维矩 阵,前两页都为零,最后一页的最后一个元 素为1.
第二章 Matlab矩阵和数组
由于Matlab自身的特点,它是一种 以科学计算为基础的软件,M语言 的基本处理单位是数值矩阵或向量, 在M语言中统一把矩阵、向量称为 数组。 首先了解一些相关的概念。
一、概述
1.变量和常量 • 变量:指在程序运行过程中需要改变数值 的量,每个变量都有一个名字(命名规则 和C相似,字母开头,数字字母和下划线 的组合。)每个变量在内存中占据一定的 空间。注:在matlab中变量名区分大小写。 • 常量:在程序运行过程中不需要改变数值 的量。