matlab非同秩矩阵相乘_MATLAB自学笔记(八):矩阵元素运算与矩阵运算

一、矩阵元素运算

1.矩阵的加减运算

前提是参与运算的两个或多个矩阵均为m*n矩阵;或者其中一个或多个矩阵为标量

C = A±B:C(m,n) = A(m,n) + B(m,n)

C = A±x:C(m,n) = A(m,n) + x

矩阵运算满足加法法则,交换律、结合律

2.矩阵的乘法运算

数与矩阵的乘法:

由于MATLAB中单个数据都是以标量的形式存在,因此数与矩阵的乘法也可以从称为标量与矩阵的乘法

C = x*A:C(m,n) = x*A(m,n)、

l*A = A

x(A+B) = xA+xB

(x+y)A = xA+yA

(xy)A = x(yA) = y(xA)

矩阵与矩阵的乘法:

两个矩阵的乘法必须满足被乘矩阵的列数与乘矩阵的行数相等,即C’m,n’ = A’m,k’ * B’k,n’,这满足我们所选的线性代数的要求。

矩阵之间的乘法不满足交换律,即AB ≠ BA

(A*B)*C = A*(B*C)

A*(B+C) = A*B + A*C

(B+C)*A = B*A + C*A

E*A = A*E = A                         %E为单位阵

3.矩阵的除法运算

矩阵的除法是乘法的逆运算,在MATLAB中共分为左除‘\’与右除‘/’两种。

A\B表示A的逆乘以B,要求A与B的行数相等

A/B表示A乘以B的逆,要求A与B的列数相等

除非A与B等价,否则A\B ≠ A/B

4.矩阵的幂运算

当矩阵A为方阵时,可进行矩阵的幂运算。其运算符号为‘^’

Python

>> A = magic(2)

A =

1 3

4 2

>> A^2

ans =

13 9

12 16

1

2

3

4

5

6

7

8

9

10

11

12

13

>>A=magic(2)

A=

13

42

>>A^2

ans=

139

1216

其中,A^2 = A*A

5.矩阵元素的查找

find()函数被用来查找矩阵中的信息,其返回值是要查找值的下标。(注意MATLAB中矩阵元素的下标排列定义方式)

Python

>> A = magic(3)

A =

8 1 6

3 5 7

4 9 2

>> B = find(A > 3)

B =

1

3

5

6

7

8

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>A=magic(3)

A=

816

357

492

>>B=find(A>3)

B=

1

3

5

6

7

8

6.矩阵元素的排序

sort()函数的作用设计按照升序排列,排列后的矩阵与元矩阵的维数相同

B = sort(A):对矩阵A进行升序排列,A可以是矩阵或向量

B = sort(A,dim):对A进行升序排列,并将结果返回到给定的维数dim上按照升序排列。    dim = 1时,按照列升序排序;dim = 2时,按照行进行排序

B = sort(…,mode):对矩阵A进行排序,mode可指定排序方式。    ascend:指定按升序排列;           descend:指定按降序排列

7.矩阵的求和

sum()函数与cumsum()函数的作用都是对矩阵的元素求和,不同的是cumsum函数返回值是矩阵

B = sum(A):对矩阵A的元素求和,返回由矩阵A各列元素的和所组成的向量

B = sum(A,dim):返回矩阵A在给定维度dim上的元素和。   dim = 1时,计算各列元素的和;dim = 2时,计算各行元素的和

B = cumsum(A)

B = cumsum(A,dim)

8.矩阵元素的求积

prod()与cumprod()的作用是对矩阵的元素求积。

B = prod(A):对矩阵A的元素求积,返回由矩阵A各列元素的积所组成的向量

B = prod(A,dim):返回矩阵A在给定维度dim上的元素积。    dim = 1时,计算各列元素的积;dim = 2时,计算各行元素的积

B = cumprod(A)

B = cumprod(A,dim)

9.矩阵元素的差分

diff()函数的作用是计算矩阵的差分

Y = diff(X):计算矩阵X各列元素的差分

Y = diff(X,n):计算矩阵X各列元素的n阶差分

Y = diff(X,n,dim):计算矩阵X在给定维度dim上的n阶差分。  dim = 1时,计算各列元素的差分;dim = 2时,计算各行元素的差分

二、矩阵运算

1.矩阵分析

求向量范数(norm):

N = norm(x,p):对任意大于1的p值,返回向量x的p阶范数

N = norm(x):返回向量的2阶范数,相当于N = norm(x,2)

N = norm(x,inf):返回向量的正无穷阶范数

N = norm(x,-inf):返回向量的负无穷阶范数

求矩阵范数(norm):

N = norm(A):计算矩阵的2阶范数,也就是最大奇异值

N = norm(A,p):根据参数p的值不同,求不同阶数的范数值

当矩阵维度比较大时,会导致计算矩阵范数的时间比较长,并且当一个近似的范数值满足要求时,可以考虑用normest()来估计2阶范数值

N = normest(S):估计矩阵S的二阶范数值

N = normest(S,tol):使用tol作为允许的相对误差

矩阵的秩(rank):

矩阵A中线性无关的列向量的个数成为矩阵的列秩,线性无关的行向量成为行秩。利用rank()函数计算矩阵的秩

rank(A):用默认允许误差计算矩阵的秩

rank(A,tol):给定允许误差计算矩阵的秩

Python

>> A = magic(3);

>> r = rank(A)

r =

3

1

2

3

4

5

6

>>A=magic(3);

>>r=rank(A)

r=

3

矩阵的行列式(det):

Python

>> A = [1 2 3;4 5 6;7 8 9];

>> r_1 = det(A);

>> disp(['A的行列式的值 = ',num2str(r_1)])

A的行列式的值 = -9.5162e-16

1

2

3

4

>>A=[123;456;789];

>>r_1=det(A);

>>disp(['A的行列式的值 = ',num2str(r_1)])

A的行列式的值=-9.5162e-16

矩阵的迹(trace):

矩阵的迹定义为矩阵的对角元素之和

Python

>> A = [1 2 3;4 5 6;7 8 9];

>> t = trace(A);

>> disp(['A的迹 = ',num2str(t)])

A的迹 = 15

1

2

3

4

>>A=[123;456;789];

>>t=trace(A);

>>disp(['A的迹 = ',num2str(t)])

A的迹=15

矩阵的化零矩阵(null):

Z = null(A):返回矩阵A的一个化零矩阵。若化零矩阵不存在则返回空矩阵

Z = null(A,’r’):返回有理数形式的化零矩阵

矩阵的正交空间(orth):

矩阵A的正交空间Q具有Q’*Q = I的性质,并且Q的列矢量构成的线性空间和矩阵A的列矢量构成的线性空间相同,且正交空间Q与矩阵A具有相同的秩

Python

>> A = [1 2 3;4 5 6;7 8 9];

>> Q = orth(A)

Q =

-0.2148 0.8872

-0.5206 0.2496

-0.8263 -0.3879

1

2

3

4

5

6

7

8

>>A=[123;456;789];

>>Q=orth(A)

Q=

-0.21480.8872

-0.52060.2496

-0.8263-0.3879

矩阵的约化行阶梯形式(rref):

矩阵的约化行阶梯形式是高斯-约旦消去法解法性方程组的结果

R = rref(A):返回矩阵A的约化行阶梯形式R

[R,jb] = rref(A):返回矩阵A的约化行阶梯形式R,并返回1*r的向量jb,r为A的秩;     A(:,jb)是矩阵A的列矢量构成的线性空间;R(1:r,jb)是r*r的单位矩阵

[R,jb] = rref(A,tol):以tol为允许的相对误差计算矩阵A的秩

Python

>> R = rref(A)

R =

1 0 -1

0 1 2

0 0 0

1

2

3

4

5

6

7

>>R=rref(A)

R=

10-1

012

000

矩阵空间之间的夹角(snbspace):

矩阵空间之间的夹角代表两个矩阵线性相关的程度。

若夹角小,则相关度高;反之相关度就低

theta = subspace(A,B):返回矩阵A与B之间的夹角

2.矩阵分解

矩阵分解就是把一个矩阵分解成几个‘较简单’的矩阵连乘的形式

对称正定矩阵的Cholesky分解

Cholesky分解在MATLAB中用函数chol()实现

R = chol(X):X为对称正定矩阵,R是上三角阵,使得X = R’ * R。若R不是正定矩阵,则返回错误信息

[R,p] = chol(X):返回两个参数,且不会返回错误信息。  当X是正定矩阵时,返回的上三角函数R满足X = R’ * R,且p = 0;    当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数为p-1,且满足X(1 : p-1, 1 : p-1) = R’ * R

若线性方程组Ax = B,其中A可以做Cholesky分解,使得A = R’ * R,这样线性方程组就可以改写成R’ * R * x  = B,再根据左除运算符‘\‘可以快速处理三角矩阵,因此可得出

x = R\(R’\B)

若A为n*n的方阵,则chol(A)的计算复杂程度是O(n^3);而使用左除运算的计算复杂程度只有O(n^2)

Python

>> A = pascal(3)

A =

1 1 1

1 2 3

1 3 6

>> R = chol(A)

R =

1 1 1

0 1 2

0 0 1

>> R'*R

ans =

1 1 1

1 2 3

1 3 6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

>>A=pascal(3)

A=

111

123

136

>>R=chol(A)

R=

111

012

001

>>R'*R

ans=

111

123

136

一般方程的高斯消去法分解

高斯消去法分解又称LU分解,他可以将任意一个方阵A分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A = L·U。

[L,U] = lu(X);X为一个方阵,L为’心理‘的下三角阵,U为上三角阵,满足关系X = L·U

[L,U,P] = lu(X):P为置换矩阵,满足关系P·X = L·U

Y = lu(X):把上三角阵与下三角阵合并在矩阵Y中给出,即Y = L+U-I,置换矩阵P的信息丢失

若线性方程组Ax = b,若矩阵A可以做LU分解,使得A = L·U,则线性方程组可以改写成L·U·x = b,则可以解出

x = U\(L\b)

利用LU分解来计算行列式的值和矩阵的逆,其命令形式如下:

det(A) = det(L) * det(U)

inv(A) = inv(U) * inv(L)

矩形矩阵的正交分解

矩形矩阵的正交分解又称为QR分解。QR分解把一个m*n的矩阵A分解成一个正交矩阵Q和一个上三角矩阵R的乘积,即A = Q · R

[Q,R] = qr(A):其中矩阵R与矩阵A具有相同大小的上三角矩阵,Q为正交矩阵,他们满足A = Q · R。该调用方式适用于满矩阵和稀疏矩阵

[Q,R] = qr(A,0):为‘经济’方式的QR分解。设矩阵A是一个m×n的矩阵,若m>n,则只计算前n列元素,R为n×n的矩阵;若m≤n,则与[Q,R] = qr(A)效果一致。该调用方式适用于满矩阵和稀疏矩阵

[Q,R,E] = qr(A):R是上三角矩阵,Q为正交矩阵,E为置换矩阵。满足A · E = Q · R,程序选择一个合适的矩阵E使得abs(diag(R))降序排列。该调用方式适合于满矩阵

[Q,R,E] = qr(A,0):‘经济’方式的QR分解,其中E是一个置换矩阵。他们满足A(:,E) = Q · R。该调用方式适合于满矩阵

R = qr(A,0):以‘经济’方式返回上三角矩阵R

[C,R] = qr(A,B):矩阵B必须与矩阵A具有相同的行数,矩阵R是上三角矩阵,C = Q’ · B

舒尔分解

舒尔分解的定义式为

A = U · S · U’

其中A必须是方阵,U是一个酉矩阵,S是一个块对角化矩阵,有对角线上的1×1和2×2块组成。特征值可以由矩阵S的对角块给出,二矩阵U给出比特征向量更多的数值特征。此外,对缺陷矩阵也可以进行舒尔分解。MATLAB中用函数schur()来进行舒尔分解

[U,S] = schur(A):返回酉矩阵U和块对角矩阵S

S = schur(A):仅返回块对角矩阵S

schur(A,’real’):返回的实特征值放在对角线上,而把复特征值放在对角线上的2×2块中

schur(A,’complex’):返回的矩阵S是上三角矩阵,并且如果矩阵A有复特征值,则矩阵S是复矩阵

另外,函数rsf2csf()可以把实数形式的舒尔矩阵转换成复数形成的舒尔矩阵。

赞赏作者

微信赞赏支付宝赞赏

喜欢 (3)or分享 (0)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值