MATLAB矩阵处理-续
矩阵求值
向量和矩阵的范数
1)向量的 3 种常用范数
向量1—范数:向量元素的绝对值之和。
向量2—范数:向量元素平方和的平方根。
向量∞—范数:所有向量元素绝对值中的最大值。
norm(V) 或 norm(V, 2):计算向量 V 的 2—范数。
norm(V, 1):计算向量 V 的 1—范数。
norm(V, inf):计算向量 V 的 ∞—范数。
2)矩阵的范数
矩阵 A 的 1—范数:矩阵列元素绝对值之和的最大值。
矩阵 A 的 2—范数:A’A 矩阵的最大特征值的平方根。
矩阵 A 的 ∞—范数:所有矩阵行元素绝对值之和的最大值。
1 | >> x = [2,0,1; -1,1,0; -3,3,0] |
矩阵的条件数
矩阵 A 的条件数等于 A 的范数与 A 的逆矩阵的范数的乘积。
条件数越接近 1,矩阵的性能越好。
cond(A, 1):计算 A 的 1—范数下的条件数。
cond(A) 或 cond(A, 2):计算 A 的 2—范数下的条件数。
cond(A, inf):计算 A 的 ∞—范数下的条件数。
例如,求 2~10 阶希尔伯特矩阵的条件数。
1 | for n = 2:10 |
1 | ans = |
矩阵的特征值与特征向量
E = eig(A):求矩阵 A 的全部特征值,构成向量 E。
[X, D] = eig(A):求矩阵 A 的全部特征值,构成对角阵 D,并产生矩阵 X,X 各列是相应的特征向量。
1 | >> A = randi([1,10],3,3) |
MATLAB 提供了一个 eigshow 函数,可以演示单位圆上的向量 x 和 Ax 之间的关系。
稀疏矩阵
稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号。
A = sparse(S):将矩阵 S 转化为稀疏存储方式的矩阵 A。
S = full(A):将矩阵 A 转化为完全存储方式的矩阵 S。
1 | >> A = sparse(eye(5)) |
直接建立稀疏存储矩阵
sparse 函数的其他调用格式:
sparse(m, n):生成一个 m*n 的所有元素都是零的稀疏矩阵。
sparse(u, v, S):其中 u, v, S 是 3 个等长的向量。S 是要建立的稀疏存储矩阵的非零元素,u(i)、v(i) 分别是 S(i) 的行和列下标。
用 spconvert 函数直接建立稀疏存储矩阵,其调用格式为:B = spconvert(A)
A 为一个 m 3 或 m 4 的矩阵,其每行表示一个非零元素,m 是非零元素的个数。
A (i, 1) 表示第 i 个非零元素所在的行;
A (i, 2) 表示第 i 个非零元素所在的列;
A (i, 3) 表示第 i 个非零元素所在的实部;
A (i, 4) 表示第 i 个非零元素所在的虚部;
若矩阵的全部元素都是实数,则无须第 4 列。
1 | >> A = [2,2,1;2,1,-1;2,4,3] |
带状稀疏矩阵的稀疏存储
稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵。
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。
[B, d] = spdiags(A):从带状稀疏矩阵 A 中提取全部非零对角线元素赋给矩阵 B 及其位置向量 d。
A = spdiags(B, d, m, n):产生带状稀疏矩阵的稀疏存储矩阵 A。其中 m,n 为原带状稀疏矩阵的行数和列数,矩阵 B 的第 i 列即为原带状稀疏矩阵的第 i 条非零对角线,向量 d 为原带状稀疏矩阵的所有非零对角线的位置。
1 | >> A = [11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0] |
单位矩阵的稀疏存储
speye(m, n) 返回一个 m * n 的稀疏存储单位矩阵。
1 | >> speye(3) |
1 | kf1 = [1,1,2,1,0]; |
注意:当参与运算的数据对象不全是稀疏存储矩阵时,所得结果是完全存储形式。
本文作者 : preccrep
原文链接 : https://preccrep.github.io/2020/07/15/MATLAB%E7%9F%A9%E9%98%B5%E5%A4%84%E7%90%86-%E7%BB%AD/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!