MATLAB基础知识点——MATLAB矩阵处理
树图思维导图提供 MATLAB矩阵处理 在线思维导图免费制作,点击“编辑”按钮,可对 MATLAB矩阵处理 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:06352763a00887c77c9e4ac0b037ff79
MATLAB矩阵处理思维导图模板大纲
1.通用的特殊矩阵
zeros函数:产生全0矩阵,即零矩阵,0矩阵。
X = zeros ——返回标量 0。
X = zeros(n) ——返回一个 n×n 的全零矩阵。
X = zeros(sz1,...,szN) ——返回由零组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,zeros(2,3) 将返回一个 2×3 零矩阵。
X = zeros(sz) ——返回一个由零组成的数组,其中大小向量 sz 定义 size(X)。例如,zeros([2 3]) 将返回一个 2×3 零矩阵。
X = zeros(___,typename) ——返回一个由零组成并且数据类型为 typename 的数组。例如,zeros('int8') 将返回一个 8 位整数标量 0。您可以使用上述语法中的任何输入参数。
X = zeros(___,'like',p) ——将返回一个与 p 类似的由零值组成的数组,它具有与 p 相同的数据类型(类)、稀疏度和复/实性。您可以指定 typename 或 'like',但不能同时指定二者。
ones函数:产生全1矩阵,即幺矩阵,1矩阵。
X = ones ——返回标量 1。
X = ones(n) ——返回一个 n×n 的全 1 矩阵。
X = ones(sz1,...,szN) ——返回由 1 组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,ones(2,3) 返回由 1 组成的 2×3 数组1矩阵。
X = ones(sz) ——返回一个由 1 组成的数组,其中大小向量 sz 定义 size(X)。例如,ones([2,3]) 返回由 1 组成的 2×3 数组1矩阵。
X = ones(___,typename) ——在上述语法的基础上进一步指定 X 的数据类型(类)。例如,ones(5,'int8') 返回 8 位整数组成的 5×5 矩阵。
X = ones(___,'like',p) ——指定 X 具有与数值变量 p 相同的数据类型、稀疏性和复/实性(实数或复数)。
eye函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
I = eye ——返回标量 1。
I = eye(n) ——返回一个主对角线元素为 1 且其他位置元素为 0 的 n×n 单位矩阵对角矩阵。
I = eye(n,m) ——返回一个主对角线元素为 1 且其他位置元素为 0 的 n×m 矩阵。
I = eye(sz) ——返回一个主对角线元素为 1 且其他位置元素为 0 的数组。大小向量 sz 定义 size(I)。例如,eye([2,3]) 返回一个主对角线元素为 1 且其他位置元素为 0 的 2×3 数组。
I = eye(___,typename) ——在上述语法的基础上还指定 I 的数据类型(类)。例如,eye(5,'int8') 返回由 8 位整数组成的 5×5 单位矩阵。
I = eye(___,'like',p) ——指定 I 具有与数值变量 p 相同的数据类型、稀疏性和复/实性(实数或复数)。
主对角线元素为 1
rand函数:产生(0,1)开区间内均匀分布的随机矩阵。
X = rand ——返回一个在区间 (0,1) 内均匀分布的随机数。
X = rand(n) ——返回一个 n×n 的随机数矩阵。
X = rand(sz1,...,szN) ——返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如:rand(3,4) 返回一个 3×4 的矩阵。
X = rand(sz) ——返回由随机数组成的数组,其中大小向量 sz 指定 size(X)。例如:rand([3 4]) 返回一个 3×4 的矩阵。
X = rand(___,typename) ——返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 'single' 或 'double'。您可以使用上述语法中的任何输入参数。rand(5,'int8')
X = rand(___,'like',p) ——返回由 p 等随机数组成的数组;也就是与 p 同一对象类型。您可以指定 typename 或 'like',但不能同时指定两者。
产生[a,b]区间上均匀分布的随机整数。
fix(a+(b-a+1)*x)——x为rand函数(rand,rand(n),rand(sz1,...,szN),rand(sz) 等)
randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。
X = randn ——返回一个从标准正态分布(期望值μ=0,标准差σ=1条件下的正态分布,记为N(0,1))中得到的随机标量。
X = randn(n) ——返回由标准正态分布的随机数组成的 n×n 矩阵。
X = randn(sz1,...,szN) ——返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如:randn(3,4) 返回一个 3×4 的矩阵。
X = randn(sz) ——返回由随机数组成的数组,其中大小向量 sz 定义 size(X)。例如:randn([3 4]) 返回一个 3×4 的矩阵。
X = randn(___,typename) ——返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 'single' 或 'double'。您可以使用上述语法中的任何输入参数。randn(5,'int8')
X = randn(___,'like',p) ——返回由 p 等随机数组成的数组;也就是与 p 同一对象类型。您可以指定 typename 或 'like',但不能同时指定两者。
产生均值为μ、方差为σ的随机数(符合正态分布)。
μ+σx——x为randn函数(X = randn,X = randn(n) ,X = randn(sz1,...,szN),X = randn(sz) 等)
例子
随机数
randperm
randperm函数:整数的随机排列
语法
p = randperm(n)
返回行向量,其中包含从 1 到 n 没有重复元素的整数随机排列。
p = randperm(n,k)
返回行向量,其中包含在 1 到 n 之间随机选择的 k 个唯一整数。
示例
PS:产生1~N的不重复的数(生成一个1~N随机打乱的向量)
a=randperm(N)
乱序:让一个向量a乱序,打乱顺序
a=a(randperm(length(a)))
randi
randi:均匀分布的伪随机整数
X = randi(imax)
返回一个介于 1 和 imax 之间的伪随机整数标量。
X = randi(imax,n)
返回 n×n 矩阵,其中包含从区间 [1,imax] 的均匀离散分布中得到的伪随机整数。
X = randi(imax,sz1,...,szN)
返回 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,randi(10,3,4) 返回一个由介于 1 和 10 (imax)之间的伪随机整数组成的 3×4 数组。
X = randi(imax,sz)
返回一个数组,其中大小向量 sz 定义 size(X)。例如,randi(10,[3,4]) 返回一个由介于 1 和 10 之间的伪随机整数组成的 3×4 数组。
X = randi(imax,classname)
返回一个伪随机整数,其中 classname 指定数据类型。classname 可以为 'single'、'double'、'int8'、'uint8'、'int16'、'uint16'、'int32' 或 'uint32'。
X = randi(imax,n,classname)
返回数据类型为 classname 的 n×n 数组。
X = randi(imax,sz1,...,szN,classname)
返回数据类型为 classname 的 sz1×...×szN 数组。
X = randi(imax,sz,classname)
返回一个数组,其中大小向量 sz 定义 size(X),classname 定义 class(X)。
X = randi([imin,imax],___)
使用以上任何语法返回一个数组,其中包含从区间 [imin,imax] 的均匀离散分布中得到的整数。
比如:
X = randi([imin,imax],sz1,...,szN)
MATLAB产生各种分布的随机数
1.在开区间,(0,1)区间的均匀分布
产生m*n阶(0,1)均匀分布的随机数矩阵:
rand (m, n)
产生一个(0,1)均匀分布的随机数:
rand
2. 均匀分布U,(a,b)区间的均匀分布
产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵
unifrnd(a,b,m, n)
产生一个[a,b]均匀分布的随机数
unifrnd (a,b)
3.均值为μ,方差为σ的正态分布的随机数矩阵:
返回由标准正态分布的随机数组成的 n×n 矩阵。(期望值μ=0,标准差σ=1条件下的正态分布,记为N(0,1))
X = randn(n)
产生一个均值为μ,方差为σ的正态分布
normrnd(μ,σ)
产生mxn阶均值为μ,方差为σ的正态分布
normrnd (μ,σ,m,n)
4.二类分布binornd(N,P,m,n),
binornd(10,0.5,m,n)
即产生m*n均值为N*P的矩阵
binornd(N,p)
则产生一个标量。
binornd(10,0.5,m)
则产生m*m的方阵,军阵为N*p。
5.产生m*n阶离散均匀分布的随机数矩阵:
unidrnd(N,m,n)
产生一个数值在1-N区间的m*n矩阵
6.产生m*n阶期望值为μ的指数分布的随机数矩阵:
exprnd (μ,m,n)
此外,常用逆累积分布函数表
函数名 调用格式 函数注释
norminv X=norminv(P,mu,sigma) 正态逆累积分布函数
expinv X=expinv(P,mu) 指数逆累积分布函数
weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数
logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数
Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数
Betainv X=betainv(P,A,B) β分布逆累积分布函数
2.用于专门学科的特殊矩阵
M=magic(n)——魔方矩阵,Magic Square ,n阶
A=vander(V) ——范德蒙矩阵,Vandermonde,n阶
H=hilb(n)——希尔伯特矩阵,Hilbert,n阶
A=compan(p) ——伴随矩阵,n阶——意义:根据一个多项式p可以写出它的伴随矩阵A,这个矩阵A的特征值就是方程p=0的根。
P=pascal(n)——帕斯卡矩阵,Pascal,杨辉三角形,n阶
1.对角阵
对角阵:只有对角线上有非零元素的矩阵。
数量矩阵:对角线上的元素相等的对角矩阵。
单位矩阵:对角线上的元素都为1的对角矩阵。
(1) 提取矩阵的对角线元素
diag(A)——提取矩阵A主对角线元素,产生一个列向量。
diag(A,k)——提取矩阵A第k条对角线的元素,产生一个列向量。
(2) 构造对角阵
diag(V)——以向量 V为主对角线元素,其余元素为0。产生对角矩阵。
diag(V,k)——以向量 V为第k条对角线元素,其余元素为0。产生对角矩阵。
用一个【对角阵左乘】一个矩阵时,相当于用对角阵对角线的第1个元素乘以该矩阵的第一行,用对角阵对角线的第2个元素乘以该矩阵的第二行,依此类推。
要将A的各列元素分别乘以对角阵的对角线元素,可以用一个【对角阵右乘】矩阵A。
2.三角阵
上三角阵:矩阵的对角线以下的元素全为零的矩阵。
下三角阵:对角线以上的元素全为零的矩阵。
(1)提取上三角矩阵
triu(A)——提取矩阵A的主对角线及以上的元素。
triu(A,k)——提取矩阵A的第k条对角线及以上的元素。
(2) 提取下三角矩阵:在MATLAB中,提取矩阵A的下三角矩阵的函数是tril,其用法与triu函数完全相同。
tril(A)——提取矩阵A的主对角线及以下的元素。
tril(A,k)——提取矩阵A的第k条对角线及以下的元素。
3.矩阵的转置
A'——共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共轭。
4.矩阵的旋转
rot90(A,k)——将矩阵A逆时针方向旋转90º的k倍,当k为1时可省略。
5.矩阵的翻转
fliplr(A)——对矩阵A实施左右翻转。
flipud(A)——对矩阵A实施上下翻转。
6.矩阵的求逆
inv(A)——求方阵A的逆矩阵。
B=pinv(A)
即可求得矩阵A的Moore-Penrose广义逆。当为方阵时,inv逆等于pinv广义逆
分支主题 3
1.矩阵的存储方式
完全存储方式:将矩阵的全部元素按列存储。
稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和列号。
注意,采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。
2.稀疏存储方式的产生
(1)完全存储方式与稀疏存储方式之间的转化
S=full(A)——将矩阵A转化为完全存储方式的矩阵S。
A=sparse(S)——将矩阵S转化为稀疏存储方式的矩阵A。
sparse函数的其他调用格式:——直接建立稀疏存储矩阵(2)
sparse(m,n)——生成一个m×n的所有元素都是零的稀疏矩阵。
sparse(u,v,S)——其中u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。
B=spconvert(A)——(和上面的sparse函数差不多)使用spconvert函数直接建立稀疏存储矩阵,其中,A为一个m×3或m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
稀疏矩阵有两种基本类型:
无规则结构的稀疏矩阵 与
有规则结构的稀疏矩阵。
带状稀疏矩阵 就是一种十分典型的具有规则结构的稀疏矩阵,它是指:所有非零元素集中在对角线上的矩阵。
(3)带状稀疏矩阵的稀疏存储spdiags
[B,d]=spdiags(A)——从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。
A=spdiags(B,d,m,n)——产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。
(4)单位矩阵的稀疏存储
speye(m,n)——返回一个m×n的稀疏存储单位矩阵。 m*n矩阵的主对角全为1
3.稀疏矩阵应用举例
总结:
感觉这个带状稀疏矩阵的稀疏存储spdiags没太多的实操价值,还不如直接用普通的sparse(u,v,S)和B=spconvert(A)稀疏存储矩阵
1.矩阵特征值的数学定义
2.求矩阵A(必须是方阵)的特征值与特征向量 [行列式]
E=eig(A)——求矩阵A的全部特征值,构成向量E。
[X,D]=eig(A)——求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。
3.特征值的几何意义
eigshow——演示向量x和Ax之间的关系。
大写字母M,斜体字库
1.方阵的行列式
det(A)——求方阵A所对应的行列式的值。
2.矩阵的秩
rank(A)——求矩阵A的秩。
3.矩阵的迹
trace(A)——求矩阵A的迹。
4.【向量范数,矩阵范数】
(1)向量的3种常用范数
norm(V,2)或norm(V)——计算向量V的2-范数。
norm(V,1)——计算向量V的1-范数。
norm(V,inf)——计算向量V的∞-范数。
n = norm(v) ——返回向量 v 的欧几里德范数。此范数也称为 2-范数、向量模或欧几里德长度。
n = norm(v,p) ——返回广义向量 p-范数。其中 p 为 1、2 或 Inf,-Inf。
(2)矩阵的范数
n = norm(X) ——返回矩阵 X 的 2-范数或最大奇异值,该值近似于 max(svd(X))。
n = norm(X,p) ——返回矩阵 X 的 p-范数,其中 p 为 1、2 或 Inf。
不能使用-inf,矩阵的模只能为 1、2、inf 或 'fro'。
n = norm(X,'fro') ——返回矩阵 X 的 Frobenius 范数。——所有元素的绝对值的平方和,再开根号。
补充:svd
svd——奇异值分解 函数
说明:
s = svd(A)
以降序顺序返回矩阵 A 的奇异值。
[U,S,V] = svd(A)
执行矩阵 A 的奇异值分解,因此 A = U*S*V'。
[U,S,V] = svd(A,'econ')
为 m×n 矩阵 A 生成精简分解:
m > n - 只计算 U 的前 n 列,S 是一个 n×n 矩阵。
m = n - svd(A,'econ') 等效于 svd(A)。
m < n - 只计算 V 的前 m 列,S 是一个 m×m 矩阵。
精简分解从奇异值的对角矩阵 S 中删除额外的零值行或列,以及 U 或 V 中与表达式 A = U*S*V' 中的那些零值相乘的列。删除这些零值和列可以缩短执行时间,并减少存储要求,而且不会影响分解的准确性。
[U,S,V] = svd(A,0)
为 m×n 矩阵 A 生成另一种精简分解:
m > n - svd(A,0) 等效于 svd(A,'econ')。
m <= n - svd(A,0) 等效于 svd(A)。
5.矩阵的条件数
在MATLAB中,计算矩阵A的3种条件数的函数是:
cond(A,1)——计算A的1-范数下的条件数。
cond(A,2)或cond(A)——计算A的2-范数数下的条件数。
cond(A,inf)——计算A的∞-范数下的条件数。
树图思维导图提供 社群客服SOP细则 在线思维导图免费制作,点击“编辑”按钮,可对 社群客服SOP细则 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:81b812ba763ba888461739d58163c1e4
树图思维导图提供 卫生化学--元素和无机物分析 在线思维导图免费制作,点击“编辑”按钮,可对 卫生化学--元素和无机物分析 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4c942d0350c858e06a1f7ed29a86d096