matlab矩阵

xiaoxiao2021-02-27  289

一、矩阵构造

简单矩阵的构造:采用方括号[],同行元素用逗号“,”隔开,行与行之间用“;”隔开

特殊矩阵的构造函数:

ones(n)构建n*n的矩阵,矩阵元素全为1;

ones(m,n) 构建m*n的矩阵,矩阵元素全为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)  构建一个n*n的矩阵,其每一行每一列的元素之和都相等

rand(n)构建n*n的矩阵,其元素为0-1之间均匀分布的随机数

rand(m,n)构建m*n的矩阵,其元素为0-1之间均匀分布的随机数

向量:即行向量与列向量

标量:m=n=1,建立的矩阵为标量,任意的1*1的矩阵形式可以表示的单个实数、复数都是标量;

空矩阵:当m=n=0或者m=0,n=0,创建的矩阵成为空矩阵,空矩阵不是0矩阵。

-----------------------------------------------------------------------------------------------------

矩阵旋转与改变维度的函数

fliplr(A):矩阵的每一行均进行逆序排序

flipud(A):矩阵的每一列均进行逆序排序

rot90(A):生产一个由矩阵A逆时针旋转90度而得到的新矩阵

rot90(A,K):生产一个由矩阵A逆时针旋转k*90度而得到的新矩阵

reshape(A,m,n):生成一个m*n的矩阵,其元素以线性索引的顺序从矩阵A中取得,A中的元素必须为m*n个

reshape(A,[m n ...p]):创建一个与矩阵A有相同元素的m*n...*p多维矩阵

>> reshape(a,[2 2 2]) Error using reshape To RESHAPE the number of elements must not change. >> reshape(a,[1 2 3]) ans(:,:,1) = 1 4 ans(:,:,2) = 2 5 ans(:,:,3) = 3 6-----------------------------------------------------------------------------------------------------------------------------------

shift(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]=SORT(A...)   ix为排序后备元素在元矩阵中的行位置或列位置的索引

----------------------------------------------------------------------------------------------------

矩阵的合并

C=[A,B]在水平方向,合并矩阵A和B

C=[A;B]在竖直方向上合并A和B

具有相同高度的两个矩阵可以在水平方向上合并为新矩阵,否则不能。

矩阵行列的删除

要删除矩阵的某行或某列,只要把该行或者列赋予一个穷矩阵[]就可以;

>> A=rand(4) A = 0.8147 0.6324 0.9575 0.9572 0.9058 0.0975 0.9649 0.4854 0.1270 0.2785 0.1576 0.8003 0.9134 0.5469 0.9706 0.1419 >> A(2,:) ans = 0.9058 0.0975 0.9649 0.4854 >> A(2,:)=[]%:代表所有的行 A = 0.8147 0.6324 0.9575 0.9572 0.1270 0.2785 0.1576 0.8003 0.9134 0.5469 0.9706 0.1419  冒号“:”代表所有行或者所有列

重构矩阵

转置矩阵:a的转置是a'

>> A' ans = 0.8147 0.1270 0.9134 0.6324 0.2785 0.5469 0.9575 0.1576 0.9706 0.9572 0.8003 0.1419

共轭矩阵

a的共轭矩阵为conj(a)

====================================================================

二、矩阵的下标

矩阵的下标索引有两种:双下标索引和单下标索引两种;单下标索引是按照列元素优先,按列进行重排,组成一个一维数组

>> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> A(10) ans = 10 矩阵索引表达式

A(:) 将二维矩阵A重组为一维数组,返回数组中第一个元素;

A(j:k)返回上述A(:)的第j到第k个元素

A(:,j):表示返回矩阵的第j列列向量

A(i,:):第i行的行向量

A(:,i:j):表示返回第i列到第j列的列向量

A(i:j,:):

A(:,[1,3]):返回第一列和第三列

A(i:j,k:l)返回第i行到第j行与第k列和第l列列向量交集的子矩阵

>> A(1:3,2:4) ans = 2 3 13 11 10 8 7 6 12

end关键字

表示该维中最后一个元素

>> A(1,end) ans = 13 >> A(4,end) ans = 1  --------------------------------------------

单下标和双下标索引值的转换

sub2ind(size,i,j):将双下标索引转换为单下标索引值,其中size是包含两个元素的数组,一般用size(A)表示,i和j是双下标的行列值,

[i,j]=ind2sub(size,ind):其功能是将单下标转换为双下标

>> sub2ind(size(A),3,4) ans = 15 >> ind2sub(size(A),10) ans = 10 >> [i,j]=ind2sub(size(A),10) i = 2 j = 3 矩阵运算

>> a=rand(4) a = 0.4218 0.6557 0.6787 0.6555 0.9157 0.0357 0.7577 0.1712 0.7922 0.8491 0.7431 0.7060 0.9595 0.9340 0.3922 0.0318 >> b=rand(4) b = 0.2769 0.6948 0.4387 0.1869 0.0462 0.3171 0.3816 0.4898 0.0971 0.9502 0.7655 0.4456 0.8235 0.0344 0.7952 0.6463 >> a-b ans = 0.1448 -0.0391 0.2400 0.4686 0.8696 -0.2814 0.3762 -0.3186 0.6951 -0.1011 -0.0224 0.2605 0.1360 0.8995 -0.4030 -0.6145 >> a*b ans = 0.7528 1.1685 1.4761 1.1261 0.4698 1.3735 1.1316 0.6369 0.9122 1.5502 1.8019 1.3514 0.3731 1.3367 1.1029 0.8321 >> a+1 ans = 1.4218 1.6557 1.6787 1.6555 1.9157 1.0357 1.7577 1.1712 1.7922 1.8491 1.7431 1.7060 1.9595 1.9340 1.3922 1.0318 >> a*b' ans = 0.9927 0.8074 1.4757 1.3333 0.6428 0.4266 0.7792 1.4685 1.2674 0.9352 1.7673 1.7289 1.0927 0.5057 1.2951 1.1547 >> b' ans = 0.2769 0.0462 0.0971 0.8235 0.6948 0.3171 0.9502 0.0344 0.4387 0.3816 0.7655 0.7952 0.1869 0.4898 0.4456 0.6463矩阵的除法 分为:/ 右除和左除\,如果矩阵A和B是标量,则左右除法等价;一般的二维矩阵A、B,当进行A\B运算时,要求A的行数与B的列数相同,当A/B时,要求A列数与B的列数相等。

矩阵的幂次运算

只有当矩阵为方阵时,才可以 "^"

===================================================================

矩阵元素的查找

find() 通常结合关系函数和逻辑函数

ind=find(x):该矩阵查找矩阵X中的非零元素,函数返回这些元素的单下标

[row,col]=find(x):该函数查找矩阵X中的非零元素,函数返回这些元素的双下标

矩阵元素的求和

sum(A)对矩阵A的元素求和,返回由矩阵各列元素的和组成的向量

sum(A,dim)该函数返回在给定的维数dim上元素的和,dim=1时,计算矩阵A各列元素的和,dim=2时,计算矩阵各行元素的和。

矩阵元素的差分

diff(x)  计算矩阵个列元素的查分

diff(x,n)计算矩阵各列元素的n阶差分

diff(x,n,dim)当dim=1时,计算矩阵各列元素的差分,当dim=2时,计算矩阵各行元素的差分

==================================================================================

矩阵结构:矩阵子元素的排列方式

isempty(A)判断矩阵是否为空

isscalar(A)检测矩阵是否是单元素的标量矩阵

isvector(A)检测矩阵是否是只具有一行或者一列元素的一维向量

issparse(A)检测数组是否是系数矩阵

以上函数返回值是1或者0;

矩阵的大小

n=ndims(x)  获取矩阵维数

[m,n]=size(x)  获取矩阵在各维上的长度

n=length(x)  获取矩阵在最长维上的长度

n=nume(x)获取矩阵元素的个数

矩阵的数据类型

isnumeric  检测矩阵元素是否为数值型变量

isreal  实数数值型

isfloat 浮点数值型

isinterger  整型变量

ischar  字符型

islogical  逻辑型

isstruct  结构体型

返回值是逻辑型数据

矩阵占用的内存

whos

转载请注明原文地址: https://www.6miu.com/read-7512.html

最新回复(0)