矩阵
在matlab中矩阵是以数组的形式存在的,一维数组相当于 向量,二维数组相当于矩阵,所以矩阵是数组的子集
函数名称 函数功能
ones(n)构建nXn的1矩阵, 矩阵的元素全部是1
ones(m,n)构建mXn的1矩阵
ones (size (A) )构建一 个和矩阵A同样大小的1矩阵
zeros(n) 0矩阵
zeros (m, n)
zeros(size (A) )
eye (n) 单位矩阵
eye (m,n)
eye(size(A))
magic (n) 构建-个nXn的矩阵,其每一行每一列的元素之和都相等
rand (n)构建一个nXn的矩阵,其元素为0-1之间均匀分布的随机数
rand (m,n)构建 一个mXn的矩阵,其元素为0–1之间均匀分布的随机数
向量,标量和空矩阵
注:只有一行的矩阵称为行向量,只有一列的矩阵成为列向量
向量
当m=1或n=1时,即1Xn或者 mX1矩阵,建立的矩阵称为向量,m=1时称为行向量,n=1称为列向量
标量
当m=n=1时,建立的矩阵称为标量,任意的1x1的矩阵形式可以表示的单个实数、复数都是标量
空矩阵
当m=n=0,或者m=0,或者n=0,即0x0,0xn,mx0时 ,创建的矩阵称为空矩阵。空矩阵不是0矩阵
矩阵旋转与改变维度的函数
函数名称 函数功能
fliplr(A)矩形每一 行 均进行逆序排序flipud(A)矩阵每一列均进 行逆序排列
rot90(A)生成一个由矩阵A逆时针旋转90度而得到的新矩阵
rot90(A,k)生产一个由矩阵A逆时针旋转k*90度而得到的新矩阵
reshape(A,m,n)_生成一个mXn的矩阵,其元素以线性索引的顺序从矩阵A中取得,A中元素个数必须为mXn个
reshape(A,[m n …]创建一个和矩阵A有相同元素的mXn…Xp多维元素
shiftdim(A,n)矩阵的列移动n步,n为正数,矩阵向左移动,n为负数,向右移动
squeeze(A)返 回没有空维的矩阵A
cat(dim,A,B)将矩阵组合A和B组合成一个dim维 的多维矩阵
permute(A,order)根据向量order来改变矩阵A中的维书顺序
ipermute(A,order)根据命令permute的逆变换
sort (A)对一维矩阵或二维矩阵进行升序排序,并返回升序后的矩阵,当A是二维矩阵时,对矩阵的每一列分别进行排序
sort (A,dim) dim=1时, 对列进行排序,当dim=2时, 对行进行排序
sort (A, dim, mode) mode为ascend时, 升序排序,mode为descend时,降序排序
[B,IX]=srt(A… IX为排序后备元素在元矩阵中的行位置或列位置的索引
矩阵行列的删除
要删除矩阵的某一行或者某一 列, 只要把该行或者列赋予一个空矩阵"[ ]"就可以。
A=rand(3) %产生3x3的随机矩阵
A=
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575A(2,;)=[] % 其中:的意思是第二行所有列
A=
0.8147 0.9134 0.2785
0.1270 0.0975 0.9575A=[1,2,3;4 5 6]
A=
1 2 3
4 5 6B=[1;2]
B=
1
2C=[AB]
C=
1 2 3 1
4 5 6 2D=[1 2 3]
D=
1 2 3E=[A;D]
E=
1 2 3
4 5 6
1 2 3
重构矩阵
矩阵重构的两个比较重要的运算是转置和共轭转置C=C’
A=rand(3)
A=
0.9649 0.9572 0.1419
0.1576 0.4854 0.4218
0.9706 0.8003 0.9157A’ans=
0.9649 0.1576 0.9706
0.9572 0.4854 0.8003
0.1419 0.4218 0.9157
**
矩阵下标的引用
**
在MATLAB中,普通一维数组的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行列位置。例如A(2,3)表示矩阵A中第2行第3列的元素。单下标索引的方式采用列元素优先的原则,对m行n列的矩阵按列元素进行重组,组成一维数组, 再取新的一维数组中的元素位置对应的值作为元素在原矩阵中的单下标,例如对4X4的矩阵,A(7)表示矩阵A中的第3行第2列的元素,而A(1,3)表示矩阵A中第一行, 第四列的元素
常用的矩阵索引表达式
索引表达式 ,函数功能( 有“,”就是双下标索引,没有就是单下表索引 )
A(1) 将二维矩阵A重组为一维数组, 返回数组中的第一个元素
A(:,j) 返回 二维矩阵A中第j列列向量
A(i,:) 返回二维矩阵A中第i行行向量
A(:,j:k) 返回二维矩阵A中的第j列到第k列列向量组成的子矩阵(j:1:k)
A(i:k,:) 返回二维矩阵A中第i行到第k行行向量组成的矩阵
A(i:k,j:D) 返回二维矩阵A中第i行到第k行行向量,和第列到第列列向量的交集组成的子矩阵
A(: )将矩阵A中的每列合并成个长的列向量
A(j:k) 返回一个行向量,其元素为A (: )中的第j个元素到第k个元素
A([j1 j2 j3…]) 返回一个行向量,其中的元素为A (: )中的第j1,j2, j3…个元素
A(:,[j1 j2…])返回矩阵A中第j1, j2…列的列向量
A([i1 i2…],:)返回矩阵A中的第i1行,i2行…的行向量
A([i1i2 …],[j1j2…]返回矩阵第i1行, 第i2行…和第j1列,第j2列…的元素
MATLAB中提供了一个关键字end,用来表示该维中的最后一个元素。
A=[1 2;3 4]
A=
1 2
3 4A(1,end) %第1行最后1列
ans =
2
单下标和双下标索引值的转换
矩阵中某一元素的单 下标索引值和双下标索引值之间,可以通过MATLAB内部函数进行转换,语法格式为:IND=sub2ind(siz,i,j)
其功能是将双下标索引值转换为单下标索引值,其中siz是一个包含两个元素的数组,一般直接用size(A)表示,i与j是双下标索引中的行、列的值,IND是转换后的单下标索引值
[I J]=ind2sub(siz,ind)
其功能是将单下标索引值转换为双下标索引值。
**
矩阵的运算
**
矩阵的加、减、乘、除、比较运算和逻辑运算等代数运算是MATLAB数值计算最基础的部分。
进行矩阵加法,减法运算的前提是参与运算的两个矩阵或多个矩阵必须具有相同的行数和列数,或者其中一个或多个矩阵是标量
两个矩阵的乘法必须满足被乘矩阵的列数与乘矩阵的行数相等,设矩阵A为mXh矩阵,B为hXn矩阵,则两矩阵的乘积C=AxB。矩阵之间的乘法不遵循交换律。
矩阵的除法是乘法的逆运算,分为左除和右除两种,分别用运算符号“\”和“/”表示。如果矩阵A和矩阵B是标量。那么A/B和A\B是等价的。对于一般二维矩阵A和B,当进行A\B运算时,要求A的行数与B的行数相等;当A/B时,要求A的列数与B的列数相等。
当矩阵A为方阵时,可进行矩阵的幂运算。用符号"^"表示幂运算
矩阵元素的求和
MATLAB中函数sum ()的作用是对矩阵的元素求和,语法格式如下
B=sum (A),该函数对矩阵A的元素求和,返回由矩阵A各列元素的和组成的向量。
B=sum(A,dim)该函数返回在给定的维数dim上元素的和,dim=1时,计算矩阵A各列元素的和,dim=2时,计算矩阵A各行元素的和
矩阵元素的查找
MatLab中函数find ()的作用是进行矩阵元素的查找,它通常与关系函数和逻辑函数相结合。(可在find函数括号中加入查找条件 比如 find(X>1) )(find返回的是非零元素位置)
ind=find(X) :该函数查找矩阵X中的非零元素,函数返回这些元素的单下标
[I,J]=find(X):该函数查找矩阵X中的非零元素,函数返回这些元素的双下标i和j
2018.10.4