矩阵运算

矩阵基础操作

特殊矩阵

  • 零矩阵zeros与一矩阵ones
  • 单位矩阵eye
  • 对角矩阵diag

特殊矩阵表:

函数名 矩阵名
compan 伴随矩阵
gallery 测试矩阵
hadamard 哈达玛矩阵
hankel 汉克尔矩阵
hilb 希尔伯特矩阵
invhilb 希尔伯特矩阵的逆矩阵
magic 幻方矩阵
pascal 帕斯卡矩阵
rosser 典型对称特征值测试问题
toeplitz 托普利茨矩阵
vander 范德蒙德矩阵
wilkinson 威尔金森的特征值测试矩阵

创建、串联和扩展

  • 创建
  • 串联
  • 扩展

删除行列

  • A(:,3)=[]

重构

  • reshape

多维数组

  • 行,列,页

索引

% (1)取指定行和列的一个元素(输出的是一个值)
A=[1 2 5; 1/2 1 2; 1/5 1/2 1];
A
A(2,1)
A(3,2)
% (2)取指定的某一行的全部元素(返回的是一个行向量)
A(1,:)
A(2,:)
% (3)取指定的某一列的全部元素(返回的是一个列向量)
A(:,1)
A(:,3)
% (4)取指定的某些行的全部元素(返回的是一个矩阵)
A([1,3],:) % 只取第一行和第三行
A(1:3,:) % 取第一行到第三行
A(1:2:3,:) % 取第一行和第三行 (从一开始,每次递增2个行,到3结束)
% 递增语法
1:3:10
10:-1:1
A(1:end,:) % 取第一行到最后一行
A(1:end-1,:) % 取第一行到倒数第二行

% (5)取全部元素(按列拼接的,最终输出的是一个列向量)
A(:)

矩阵基础运算

加减法

  • 矩阵加法

矩阵乘积与转置

  • 点乘,点除(形状相同)
  • 转置A'
% MATLAB在矩阵的运算中,“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))
A = [1,2;3,4]
B = [1,0;1,1]
A * B
inv(B) % 求B的逆矩阵
B * inv(B)
A * inv(B)
A / B

% 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./”
A = [1,2;3,4]
B = [1,0;1,1]
A .* B
A ./ B

% 每个元素同时乘或除相同的倍数
A = [1,2;3,4]
A * 2
A .* 2
A / 2
A ./ 2

% 每个元素同时乘方时只能用 .^
A = [1,2;3,4]
A .^ 2 %将各个元素平方
A ^ 2
A * A

矩阵乘法

  • 矩阵乘法

  • 矩阵除法(等于乘矩阵的逆)

    • 右除
    • 左除

    尽管这不是标准的数学表示法,但MATLAB使用标准示例中常见的除法术语来描述常规联立方程组的解。斜杠\和反斜杠\这两个除号分别对应MATLAB函数mrdividemldivide。两种运算符分别用于未知矩阵出现在系数矩阵左侧或右侧的情况:

    x=b/A表示使用mrdivide获得的矩阵方程的解。

    x=A\b表示使用mldivide获得的矩阵方程的解。

    考虑将方程的两端“除以”。系数矩阵始终位于“分母”中。

    x=A\b的维度兼容性条件要求两个矩阵的行数相同。这样,解的列数便与的列数相同,并且其行维度等于的列维度。对于x=b/A,行和列的角色将会互换。

    实际上,形式的线性方程组比形式的线性方程组更常见。因此,反斜杠的使用频率要远高于斜杠的使用频率。本节其余部分将重点介绍反斜杠运算符;斜杠运算符的对应属性可以从以下恒等式推知:

进行科学计算时,最重要的一个问题是对联立方程组求解。
在矩阵表示法中,常见问题采用以下形式:给定两个矩阵,是否存在一个唯一矩阵使

考虑示例具有指导意义。例如,方程

是否具有唯一解?

答案当然是肯定的。方程有唯一解。通过除法很容易求得该解:

该解通常不是通过计算的倒数求得的,即先计算,然后将乘以。这将需要更多的工作,而且如果以有限位数表示时,准确性会较低。类似注意事项也适用于多个未知数的线性方程组;MATLAB在解此类方程时不会计算矩阵的逆。

矩阵求逆

A^-1

矩阵分解

  • 乔列斯基分解(平方根法)chol(A)

  • LU分解(高斯消元)[L,U] = lu(B)

  • QR分解[Q,R] = qr(C)

特征值分解

方阵的特征值和特征向量分别为满足以下条件的标量和非零向量

对于对角矩阵的对角线上特征值以及构成矩阵列的对应特征向量,公式为

如果是非奇异的,这将变为特征值分解。

% 求矩阵A的全部特征值,返回一个由特征值构成的向量
E=eig(A)
% 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D]=eig(A)