前几天做了两道矩阵的题,用matlab实现对矩阵的运算。在做的时候查阅了一些函数,今天整理了一下关于mtalab矩阵运算的函数
创建二维数组
方法一:使用“[]”操作符
- 数据元素必须要在[]中进行输入;
- 行与行之间须用分号“;”间隔,也可以用回车键进行分割
- 行间元素用空格或者“,”间隔
例: a=[1,2,3;4,5,6;7,8,9]
方法二:命令函数
- ones :生成全1矩阵
ones(3) 3x3矩阵
ones(3,4) 3x4矩阵
- zeros:生成全0矩阵
- reshape
例:a=-4:4
b=reshape(a,3,3)
生成一个3x3的矩阵,矩阵元素为a中数据。先从上到下,后从左到右的顺序进行排列,要求数组的总数不变,如下图
- eye生成单位矩阵
- magic 生成魔方阵
- rand:生成0~1范围的随机矩阵
rand(10) 10阶矩阵
rand(3,4) 3X4矩阵 取值范围0~1
例·
i=a+(b-a)*rand(m,n) 生成mxn矩阵,取值范围在(a,b)
- round为取整函数,取整规则为四舍五入,如果要取整数,前面加一个round就可以
- 例 i=1+round((10-1)*rand(5,4))
- randn:产生均值为0,方差为1的标准正态随机矩阵
- randi :产生随机分布的伪随机整数
用法如下:
a=randi(imax,n) 最大值为imax的 nxn矩阵
a=randi(imax,m,n) 最大值为imax的 mxn矩阵
a=randi([imin,imax],m,n) 在imin,imax上进行取值的矩阵
矩阵分析函数
对角矩阵
- diag(a)
当a为一个m个元素的向量的时候,diag(a)将生成一个mxm的对角矩阵,其主对角元素就是向量a的原数
当 a是一个mxm的矩阵,diag(a)将产生一个m维向量,其元素为矩阵a对角线
求逆矩阵
inv(a)
求矩阵行列式的值:det(a) 矩阵a和上图一致
矩阵秩:rank(a)
矩阵上三角:b=triu(a)
矩阵下三角:b=tril(a)
化行最简形:rref(a)
方阵特征值
矩阵特征方程 f=poly(a)
特征值 eig(a)
齐次线性方程组的基础解析x=null(a)
特征值和特征向量[P,D]=eig(a)
其中P的列向量是特征向量,D的对角线元素为其所对应特征向量的特征值
线性方程组求解 Ax=b :x=inv(A)*b 或者 A\b 范数:norm
概念:范数常常用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。半范数可以为非零的矢量赋予零长度。
我们在matlab上help一下范数的格式以及应用如下 norm(X,2)返回的是矩阵和向量的2范数,当然默认的norm(X)定义的就是2范数哦~
norm(X,1)返回的是向量的1范数;
norm(X,Inf)返回的是向量的无穷范数;
norm(X,‘fro’)返回的是矩阵和向量的frobenius范数
矩阵分解
QR分解
[Q,R]=qr(a); %QR分解Q为正交矩阵,R为上三角矩阵a=QR LU分解
[L,U,P]=lu(a) ; %LU分解U为上三角,L为发生行变换的下三角 a=UL 其中P为置换矩阵 奇异值分解
[u,siqea,v]=svd(a); %奇异值分解u正交矩阵,
siqea对角矩阵,v正交矩阵 Jordan分解
[X,J]=jordan(a); %x为变换矩阵y为对角矩阵
|
请发表评论