本文汇总MATLAB矩阵的构造以及结构操作的代码汇总。
1. 特殊矩阵的构造
函数名称 | 函数功能 |
---|
ones(n) | 构建n*n的元素全为1的矩阵 |
ones(m,n,…,p) | 构建m*n*…*p的元素全为1的矩阵 |
ones(size(A)) | 构建与A矩阵相同大小的元素全为1的矩阵 |
zeros(n) | 构建n*n的元素全为0的矩阵 |
zeros(m,n,…,p) | 构建m*n*…*p的元素全为0的矩阵 |
zeros(size(A)) | 构建与A矩阵相同大小的元素全为0的矩阵 |
eye(n) | 构建n*n的单位矩阵(主对角线为1,其余为0) |
eye(m,n) | 构建m*n的单位矩阵 |
eye(size(A)) | 构建与A矩阵相同大小的单位矩阵 |
---- | ---- |
rand(n) | 构建n*n矩阵,元素为0~1之间均匀分布的随机数 |
rand(m,n,…,p) | 构建m*n*…*p矩阵,元素为0~1之间均匀分布的随机数 |
randn(n) | 构建n*n矩阵,元素为0均值、单位方差的正态分布随机数 |
randn(m,n,…,p) | 构建m*n*…*p矩阵,元素为0均值、单位方差的正态分布随机数 |
diag(x) | 构建n维矩阵,主对角线取自向量x,其余为0 |
diag(x,k) | 构建(n+abs(k))*(n+abs(k))的矩阵,第k条对角线元素取自向量x,其余为0(k=0时为主对角线,k<0为下第k条对角线,k>0为上第k条对角线,下同) |
diag(A,k) | 构建由矩阵A第k条对角线的元素组成的列向量 |
triu(A) | 构建与A矩阵相同大小的上三角矩阵,上三角元素对应A矩阵,其余为0 |
triu(A,k) | 构建与A矩阵相同大小的上三角矩阵,第k条对角线及以上元素与A相同,其余为0 |
tril(A) | 构建与A矩阵相同大小的下三角矩阵,下三角元素对应A矩阵,其余为0 |
tril(A,k) | 构建与A矩阵相同大小的下三角矩阵,第k条对角线及以下元素与A相同,其余为0 |
hilb(n) | 构建n*n的希尔伯特矩阵 |
invhilb(n) | 构建n*n的希尔伯特矩阵的整数逆矩阵 |
---- | ---- |
toeplitz(k,r) | 构建非对称托普利兹矩阵,第1列为k,第1行为r,其余元素等于其左上角元素,k与r皆为向量 |
toeplitz© | 构建用向量c构建的对称托普利兹矩阵 |
magic(n) | 构建n*n魔方矩阵,每一行、每一列和两对角线的元素和都相等 |
pascal(n) | 构建n阶对称正定帕斯卡矩阵,其元素由帕斯卡三角组成,逆矩阵元素皆为整数 |
pascal(n,1) | 构建由下三角Cholesky因子组成的对称帕斯卡矩阵 |
pascal(n,2) | 构建pascal(n,1)的转置矩阵,结果为单位矩阵的立方根 |
vander(v) | 构建范德蒙矩阵,矩阵列为向量v的幂,即v(i)^(n-j),其中n=length(v) |
hadamard(k) | 构建阶数为2k的Hadamard矩阵,只有n能被4整除时矩阵才存在 |
compan(u) | 构建特征多项式为u的伴随矩阵 |
hankel(x) | 构建由向量x定义的Hankel对称矩阵,其元素为(i,j)=x(i+j-a),第1列为向量x,反三角以下为0 |
hankel(x,y) | 构建m*n的Hankel矩阵,第1列为向量x,最后1行为向量y |
rosser | 构建8*8的双精度Rosser矩阵(用于计算特征值算法) |
wilkinson(n) | 构建n*n的Wilkinson特征值测试矩阵 |
2. 矩阵大小和结构
函数名称 | 函数功能 |
---|
fliplr(A) | 矩阵每一行逆序排列 |
flipud(A) | 矩阵每一列逆序排列 |
flip(A,dim) | 在dim维度上反转A矩阵元素的顺序 |
rot90(A) | 将矩阵A逆时针旋转90° |
rot90(A,k) | 将矩阵A逆时针旋转k*90° |
reshape(A,m,n,…,p) | 生成m*n*…*p矩阵,值以线性顺序从A中排列,需要A中元素有m*n*…*p个 |
repmat(A,[m n … p]) | 创建与A矩阵有相同元素的m*n*…*p多维矩阵 |
shiftdim(A,n) | 矩阵的列移动n步,n>0时左移,n<0时右移 |
squeeze(A) | 删除A矩阵中的单一维度 |
permute(A,order) | 根据向量order改变矩阵A的维数顺序 |
ipermute(A,order) | permute函数的逆变换 |
sort(A) | 对矩阵A的元素升序排序,当A为二维矩阵时,对每一列分别排序 |
sort(A,dim) | 当dim=1时,对矩阵列排序;当dim=2时,对矩阵行排序 |
sort(A,dim,mode) | 当mode='ascend’时,升序排序;当mode='descend’时,降序排序 |
3. 矩阵下标引用
函数名称 | 函数功能 |
---|
sub2ind(size(A),i,j) | 按排列顺序计数将双下标转换为单下标 |
ind2sub(size(A),ind) | 单下标转换为双下标 |
4. 获取矩阵信息
矩阵信息主要有:矩阵结构、大小、维度、数据类型、内存占用。
函数名称 | 函数功能 |
---|
isempty(A) | 矩阵是否为空 |
isscalar(A) | 矩阵是否为单元素标量矩阵 |
isvector(A) | 矩阵是否为只有一行或一列的一维向量 |
issparse(A) | 矩阵是否为稀疏矩阵 |
---- | ---- |
n=ndims(A) | 获取矩阵维度 |
[m,n]=size(A) | 获取矩阵大小 |
n=length(A) | 获取矩阵最长维度的长度 |
n=numel(A) | 获取矩阵元素个数 |
---- | ---- |
isnumeric(A) | 矩阵元素是否为数值型变量 |
isreal(A) | 矩阵元素是否为实数型变量 |
isfloat(A) | 矩阵元素是否为浮点型变量 |
isinteger(A) | 矩阵元素是否为整数型变量 |
islogical(A) | 矩阵元素是否为逻辑型变量 |
ischar(A) | 矩阵元素是否为字符型变量 |
isstruct(A) | 矩阵元素是否为结构体型变量 |
iscell(A) | 矩阵元素是否为元胞型变量 |
iscellstr(A) | 矩阵元素是否为结构体的元胞型变量 |
---- | ---- |
x=find(条件) | 按条件查找矩阵中的元素并以列向量形式返回单下标 |
[row,col]=find(条件) | 按条件查找矩阵中的元素并以列排列形式返回双下标 |
5. 矩阵合并
函数名称 | 函数功能 |
---|
cat(dim,A,B) | 合并矩阵A和B。当dim=1时按行(竖直)合并,当dim=2时按列(水平)合并 |
horzcat(A,B) | 类似于cat(2,A,B),按列合并矩阵 |
vertcat(A,B) | 类似于cat(1,A,B),按行合并矩阵 |
blkdiag(A,B,…,N) | 用多矩阵构造块对角化矩阵,主对角线分别为A、B、…、N,其余为0,维度大小为各矩阵之和 |
6. 矩阵计算
函数名称 | 函数功能 |
---|
sum(A) | 对矩阵A各列元素求和 |
sum(A,dim) | 当dim=1时,按列求和;当dim=2时,按行求和 |
cumsum(A,dim) | 与sum类似,但在结果矩阵中保留计算过程值 |
sum(sum(A)) | 求矩阵所有元素和 |
prod(A) | 对矩阵A的各列元素求乘积 |
prod(A,dim) | 当dim=1时,按列求积;当dim=2时,按行求积 |
cumprod(A,dim) | 与prod类似,但在结果矩阵中保留计算过程值 |
diff(A) | 计算矩阵A的各列元素的差分 |
diff(A,n) | 计算矩阵A各列元素的n阶差分(当n>=size(x,dim)时,返回空矩阵) |
diff(A,n,dim) | 当dim=1时,按列求差分;当dim=2时,按行求差分 |
norm(A) | 求矩阵A或向量A的范数(向量为2-范数、模或欧几里徳长度,矩阵为2-范数或最大奇异值) |
norm(A,p) | 求矩阵或向量的p-范数,p常取1、2、inf、-inf。 |
normest(A) | 估算矩阵的2-范数 |
normest(A,tol) | 使用tol作为允许的相对误差估算2-范数 |
rank(A) | 默认允许误差下计算矩阵的秩 |
rand(A,tol) | 以tol为允许误差计算矩阵的秩,其中tol=max(size(A))*eps(norm(A)) |
det(A) | 计算矩阵行列式 |
trace(A) | 计算矩阵的迹(对角元素和) |
null(A) | 计算矩阵的化零矩阵,若不存在则返回空矩阵 |
null(A,‘r’) | 返回有理数形式的化零矩阵 |
orth(A) | 计算矩阵的正交空间 |
rref(A) | 返回矩阵A的约化行阶梯式 |
[R,jb]=rref(A) | R为约化行阶梯式,jb为1*r的向量,其中r为矩阵的秩 |
[R,jb]=rref(A,tol) | 计算矩阵的约化行阶梯式,并以tol为允许相对误差计算秩 |
subspace(A,B) | 计算两矩阵空间夹角 |
7. 矩阵分解
函数名称 | 函数功能 |
---|
R=chol(X) | 对称正定矩阵的Cholesky分解,X为对称正定矩阵,R为上三角矩阵,且满足X=R’ * R |
[R,p]=chol(X) | X为正定矩阵时,与上相同且p=0;X为非正定矩阵时,p为正整数,R为上三角矩阵且阶数为p-1,且满足X(1:p-1,1:p-1)=R’ * R |
[L,U]=lu(X) | 将矩阵X分解为下三角矩阵L和上三角矩阵U,且X=L*U |
[L,U,P]=lu(X) | 将矩阵X分解为下三角矩阵L、上三角矩阵U和置换矩阵P,且PX=LU |
Y=lu(X) | 将矩阵X分解,上三角矩阵和下三角矩阵合并在矩阵Y中,其对角元素为上三角矩阵的对角元素,即Y=L+U-I,置换矩阵信息丢失。 |