(MATLAB)第五章-矩阵运算
目录
5.1 矩阵
5.1.1 矩阵定义
5.1.2 矩阵的生成
1. 直接按行输入
2. 利用M文件创建(一般创建大型矩阵中采用)
3. 利用文本文件创建(相同路径下)
5.1.3 创建特殊矩阵
5.1.4 矩阵元素的运算
1. 矩阵元素的修改
2. 矩阵的变维
3. 矩阵的变向
4. 矩阵的抽取
5.2 矩阵数学运算
5.2.1 矩阵的加法运算
5.2.2 矩阵的乘法运算
1. 数乘运算(每个元素都乘以相同的数)
2. 乘运算
3. 点乘运算
5.2.3 矩阵的除法运算
5.3矩阵运算
5.3.1 幂函数
5.3.2 矩阵的逆 Y = inv(X)
未完待续...
参考资料:
5.1 矩阵
5.1.1 矩阵定义
Am×n aij [] , ;
5.1.2 矩阵的生成
1. 直接按行输入
示例1:
a=[15 15 15;15 15 15;15 15 15]
示例2:
A=[[1,1+i,2];[2,3+2i,1]] %使用方括号标记每一行的元素
2. 利用M文件创建(一般创建大型矩阵中采用)
注意:M文件中变量名不可以与文件名相同,否则会造成混乱!
3. 利用文本文件创建(相同路径下)
调取txt文件:
load goods.txtgoods
5.1.3 创建特殊矩阵
函数名 | 说明 |
eye(n) | 创建n*n单位矩阵 |
eye(m,n) | 创建m*n的单位矩阵 |
eye(size(A)) | 创建与A维数相同的单位矩阵 |
ones(n) | 创建n*n全1矩阵 |
ones(m,n) | 创建m*n全1矩阵 |
ones(size(A)) | 创建与A维数相同的全1矩阵 |
zeros(m,n) | 创建m*n的全0矩阵 |
zeros(size(A)) | 创建与A维数相同的全0矩阵 |
rand(n) | 在[0,1]区间创建一个n*n均匀分布的随机矩阵 |
rand(m,n) | 在[0,1]区间创建一个m*n均匀分布的随机矩阵 |
randn(n) | 创建一个n*n的均值为0方差为1的标准正态分布随机矩阵 |
randn(n) | 创建一个m*n的均值为0方差为1的标准正态分布随机矩阵 |
diag(v) | 创建以向量v中的元素为对角的对角阵 |
zeros(m,n) | 创建m*n的全0矩阵 |
magic(n) | 创建n阶魔方矩阵 |
vander(v) | 创建以向量v为基础的范德蒙矩阵 |
hilb(n) | 创建n*n的Hibert(希尔伯特)矩阵 |
compan(P) | 创建系数向量是P的多项式的伴随矩阵 |
pascal(n) | 创建一个n阶帕斯卡矩阵 |
sparse(A) | 将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S,若A本身就是稀疏矩阵,则返回A本身 |
5.1.4 矩阵元素的运算
1. 矩阵元素的修改
命令名 | 说明 |
D=[A;B C] | A为原矩阵,B、C中包含要扩充的元素,D为扩充后的矩阵 |
A(m,:)=[] | 删除A的第m行 |
A(:,n)=[] | 删除A的第n列 |
A(m,n)=a; A(m,:)=[a b …]; A(:,n)=[a b…] | 创建n*n全1矩阵 |
2. 矩阵的变维
B=reshape(A,m,n) 将已知矩阵A按行排列变为m行n列的矩阵,得到B
B=zeros(m,n);B(:)=A(:) 将已知矩阵A按列排列变维m行n列的矩阵(首先需要先建立B的零矩阵)
3. 矩阵的变向
命令名 | 说明 |
rot90(A) | 将A逆时针方向旋转90° |
rot90(A,k) | 将A逆时针方向旋转k*90°,k为正/负整数 |
fliplr(X) | 将X左右翻转 |
flipud(X) | 将X上下翻转 |
flipdim(X,dim) | dim=1对行翻转(上下),dim=2对列翻转(左右) |
4. 矩阵的抽取
命令名 | 说明 |
v=diag(X,k) | v为抽取矩阵X的第k条对角线上的元素向量。k=0时为抽取主对角线,k为正整数是抽取上方第k条对角线上的元素,k为负整数是抽取下方第k条对角线上的元素 |
v=diag(X) | 抽取主对角线 |
tril(X) | 提取矩阵X的主下三角部分 |
tril(X,k) | 提取矩阵X的第k条对角线下面的部分(包括第k条对角线) |
triu(X) | 提取矩阵X的主上三角部分 |
triu(X,k) | 提取矩阵X的第k条对角线上面的部分(包括第k条对角线) |
5.2 矩阵数学运算
5.2.1 矩阵的加法运算
要求:维度大小相同
5.2.2 矩阵的乘法运算
1. 数乘运算(每个元素都乘以相同的数)
2. 乘运算
C=A*B,须满足:
(1)A的列数=B的行数
(2)C的行数=A的行数,C的列数=B的列数
(3)C的m行n列元素值=A的m行元素与B的n列元素对应值积的和
3. 点乘运算
点乘运算是指将两矩阵中相同位置的元素进行相乘运算,将积保存在原位置组成新矩阵
5.2.3 矩阵的除法运算
左除运算A\B(计算左除A\B时,A的行数要与B的行数一致)
A\B↔A*X=B,若A非奇异(逆矩阵inv(A)存在)则X=inv(A)*B= A\B
右除运算A/B(计算右除A/B时,A的列数要与B的列数一致)
A/B↔X * A =B,若A非奇异(逆矩阵inv(A)存在)则X= B* inv(A) = A/B
5.3矩阵运算
MATLAB常用矩阵函数:
函数名 | 说明 |
cond | 矩阵条件数值 |
condest | 1-范数矩阵条件数值 |
rcond | 矩阵逆条件数值 |
det | 矩阵的行列式 |
eig | 矩阵的特征值 |
inv | 矩阵的逆 |
norm | 矩阵的范数值 |
normest | 1-范数矩阵条件数值 |
rank | 矩阵的秩 |
orth | 矩阵的正交化运算 |
rcond | 矩阵的逆条件数值 |
trace | 矩阵的迹 |
triu | 上三角变换 |
tril | 下三角变换 |
diag | 创建对角矩阵或获得矩阵对角元素 |
expm | 矩阵的指数运算 |
logm | 矩阵的对数运算 |
sqrtm | 矩阵的开方运算 |
cdf2rdf | 复数对角矩阵转换成实数对角矩阵 |
rref | 转换成逐行递减的阶梯矩阵(Gauss-Jordan 消去法) |
rsf2csf | 实数对角矩阵转换成复数对角矩阵 |
rot90 | 矩阵逆时针旋转90° |
fliplr | 左右翻转矩阵 |
flipud | 上下翻转 |
reshape | 改变矩阵的维数 |
funm | 一般的矩阵函数 (F = funm(A,fun) 计算在方阵参数为 A 时用户定义的函数 fun。F = fun(x,k) 必须接受向量 x 和整数 k,返回大小相同的 x 的向量 f,其中 f(i) 是在 x(i) 条件下计算的函数 fun 的第 k 个导数。fun 表示的函数必须包含具有无限收敛半径的泰勒级数,被视为特殊情况的 fun = @log 除外) |
5.3.1 幂函数
在MATLAB中,矩阵的幂运算是将矩阵中的每个元素进行乘方运算,在“.^”后面输入幂的次数。
指数函数:Y = exp(X)
对数函数:Y = log(X)
平方根函数:B = sqrt(X)
… …
5.3.2 矩阵的逆 Y = inv(X)
未完待续...
参考资料:
[1] 天工在线. MATLAB2020从入门到精通·实战案例版[M]. 北京: 中国水利水电出版社, 2020.