矩阵基本数值的运算

1. 四则运算

%%    + - * /即可执行四则运算中的加减乘除 
>> a=ones(3),b=eye(3)
a=a+1,a=a/2
c=a-b,d=a*b
a=rand(3,2)
b=randn(2,3)


a =

     1     1     1
     1     1     1
     1     1     1


b =

     1     0     0
     0     1     0
     0     0     1


a =

     2     2     2
     2     2     2
     2     2     2


a =

     1     1     1
     1     1     1
     1     1     1


c =

     0     1     1
     1     0     1
     1     1     0


d =

     1     1     1
     1     1     1
     1     1     1


a =

    0.8147    0.9134
    0.9058    0.6324
    0.1270    0.0975


b =

   -0.4336    3.5784   -1.3499
    0.3426    2.7694    3.0349



2. 矩阵的左除和右除

 左除:A\B=A-1*B,A为满秩矩阵;
 右除:A/B=A*B-1,B为满秩矩阵
>> A=[1 2 3;2 3 4;3 4 7];
         B=[6;9;14];X=A\B

X =

    1.0000
    1.0000
    1.0000

3. 矩阵的乘方和开方

在MATLAB中,用“A^n”来计算矩阵A的n次方,
用“sqrtm”函数来计算矩阵的开方
(sqrtm(A)求的是满足X*X=A的矩阵X。)

>> A=[1,2;2,1]
X=sqrtm(A)
Y=A^0.5
XX=X^2
A =
     1     2
     2     1

X =

   0.8660 + 0.5000i   0.8660 - 0.5000i
   0.8660 - 0.5000i   0.8660 + 0.5000i

Y =

   0.8660 + 0.5000i   0.8660 - 0.5000i
   0.8660 - 0.5000i   0.8660 + 0.5000i

XX =

    1.0000    2.0000
    2.0000    1.0000

4. 矩阵的指数和对数运算

矩阵对数运算与矩阵指数运算互为逆运算,
可以分别用函数expm和logm来实现。

Expm: 以e为底对矩阵求指数,并不是对每个元素求指数,对每个元素求指数的指令是exp。

>> A=[1 2 3;4 5 6;7 8 9]
Y=expm(A)
A_expm_logm=logm(Y)

A =

     1     2     3
     4     5     6
     7     8     9

Y =

   1.0e+06 *

    1.1189    1.3748    1.6307
    2.5339    3.1134    3.6929
    3.9489    4.8520    5.7552

A_expm_logm =

    1.0000    2.0000    3.0000
    4.0000    5.0000    6.0000
    7.0000    8.0000    9.0000

>> 

5.向量的点积、差积和混合积

MATLAB中计算点积和差积的函数分别为dot和cross,
而混合积是点积和叉积的复合运算,
它的计算也是依靠以上两个函数。

Y =

0.8660 + 0.5000i 0.8660 - 0.5000i
0.8660 - 0.5000i 0.8660 + 0.5000i

XX =

1.0000    2.0000
2.0000    1.0000


##  4. 矩阵的指数和对数运算
矩阵对数运算与矩阵指数运算互为逆运算,
可以分别用函数expm和logm来实现。

Expm: 以e为底对矩阵求指数,并不是对每个元素求指数,对每个元素求指数的指令是exp。

```matlab
>> A=[1 2 3;4 5 6;7 8 9]
Y=expm(A)
A_expm_logm=logm(Y)

A =

     1     2     3
     4     5     6
     7     8     9

Y =

   1.0e+06 *

    1.1189    1.3748    1.6307
    2.5339    3.1134    3.6929
    3.9489    4.8520    5.7552

A_expm_logm =

    1.0000    2.0000    3.0000
    4.0000    5.0000    6.0000
    7.0000    8.0000    9.0000

>> 

矩阵的特征参数运算

1. 矩阵的行列式、秩和逆运算

在MATLAB中,分别用函数det、rank

和inv来计算矩阵的行列式、秩和逆矩阵。
例如:
A1=[1 2 3;4 5 6;7 8 0];
rank(A1),det(A1),inv(A1)
A2=[1 2 3;4 5 6;2 4 6];
rank(A2),det(A2),inv(A2)

2. 矩阵的特征参数运算

矩阵A的特征值λ和特征向量v满足
关系式:Av=λv。
  在MATLAB中,可用eig函数求出矩阵
的特征值和特征向量。
例如:

>> A=magic(3),
lambda=eig(A),[V,D]=eig(A)
A =
     8     1     6
     3     5     7
     4     9     2

lambda =

   15.0000
    4.8990
   -4.8990

V =

   -0.5774   -0.8131   -0.3416
   -0.5774    0.4714   -0.4714
   -0.5774    0.3416    0.8131

D =

   15.0000         0         0
         0    4.8990         0
         0         0   -4.8990

3. 矩阵(向量)的范数运算

  在MATLAB中,用norm和normest函数

来计算向量和矩阵X的范数。其使用格式为:
norm(X)、norm(X,2):计算X的2范数;
norm(X,1):计算X的1范数;
norm(X,inf):计算X的无穷范数;
normest(X):只能计算X的2范数,并且是
2范数的估计值,适用于计算norm(X)比较费
时的情况。

clear
clc
w=gallery('cauchy',1000);
t1=clock;
w_norm=norm(w)
t2=clock;
t_norm=etime(t2,t1)
t3=clock;
w_normest=normest(w)
t4=clock;
t_normest=etime(t4,t3)

w_norm =

    2.2469


t_norm =

    0.0730


w_normest =

    2.2469


t_normest =

    0.0220

>> 
               

矩阵的分解运算

矩阵分解是把一个矩阵分解成几个
“较简单”的矩阵连乘积的形式。
常用的矩阵分解的方法有:
三角分解(LU)、正交分解(QR)、
特征值分解(EIG)、奇异值分解(SVD)和
Chollesky分解(CHOL)等。

1.LU分解

A=LU,L是一个下三角阵与置换矩阵的
乘积(L经过行交换可化为下三角阵),
U为一个上三角阵。
LU分解在MATLAB中可以用函数lu来实现。

>> A=[1 2 3;4 5 6;4 2 6];
%A=[5 -2 0;-2 6 2;0 2 7];
[L,U]=lu(A)    %A=LU
[L1,U,P]=lu(A)  %PA=L1U,L=P-1L1

L =

    0.2500   -0.2500    1.0000
    1.0000         0         0
    1.0000    1.0000         0

U =

    4.0000    5.0000    6.0000
         0   -3.0000         0
         0         0    1.5000


L1 =

    1.0000         0         0
    1.0000    1.0000         0
    0.2500   -0.2500    1.0000

U =

    4.0000    5.0000    6.0000
         0   -3.0000         0
         0         0    1.5000

P =

     0     1     0
     0     0     1
     1     0     0

2. QR分解

QR分解是把矩阵A分解为正交矩阵Q和
上三角阵R的乘积,即A=Q*R。
在MATLAB中,QR分解可由函数qr实现

>> A=[1 2 3;4 5 6;7 8 9;10 11 12];
[Q,R]=qr(A)      %A=QR
[Q1,R1,E]=qr(A)   %AE=Q1R1

Q =

   -0.0776   -0.8331    0.5477   -0.0037
   -0.3105   -0.4512   -0.7276    0.4131
   -0.5433   -0.0694   -0.1880   -0.8153
   -0.7762    0.3124    0.3679    0.4058

R =

  -12.8841  -14.5916  -16.2992
         0   -1.0413   -2.0826
         0         0   -0.0000
         0         0         0

Q1 =

   -0.1826   -0.8165    0.5465    0.0363
   -0.3651   -0.4082   -0.7558    0.3589
   -0.5477   -0.0000   -0.1280   -0.8268
   -0.7303    0.4082    0.3373    0.4316

R1 =

  -16.4317  -12.7802  -14.6059
         0    1.6330    0.8165
         0         0    0.0000
         0         0         0

E =

     0     1     0
     0     0     1
     1     0     0

>> 

3. EIG分解

若以A的所有特征值构成对角阵D,相应
的特征向量作为列构成矩阵V,则有 AV=VD。
若V是非奇异的,则可得矩阵A的特征值
分解式:A=VDV–1。
在MATLAB中,利用eig函数即可求出矩阵
A的特征值和特征向量,也可以对A进行特征值
分解。

>> A=magic(4),[V,D]=eig(A),V*D*inv(V)

A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

V =

   -0.5000   -0.8236    0.3764   -0.2236
   -0.5000    0.4236    0.0236   -0.6708
   -0.5000    0.0236    0.4236    0.6708
   -0.5000    0.3764   -0.8236    0.2236

D =

   34.0000         0         0         0
         0    8.9443         0         0
         0         0   -8.9443         0
         0         0         0   -0.0000

ans =

   16.0000    2.0000    3.0000   13.0000
    5.0000   11.0000   10.0000    8.0000
    9.0000    7.0000    6.0000   12.0000
    4.0000   14.0000   15.0000    1.0000

>> 

4. SVD分解

A=USV’,S为A的奇异值对角阵
(对角元素的值非负,且按降序排列),U与V为正交阵。
在MATLAB中,奇异值分解可通过函数svd
来实现

>> A=[1 2 3;4 5 6;7 8 9;10 11 12];
[U,S,V]=svd(A)
[U,S,V]=svd(A,0) %奇异值的最佳分解

U =
   -0.1409    0.8247    0.5477   -0.0037
   -0.3439    0.4263   -0.7276    0.4131
   -0.5470    0.0278   -0.1880   -0.8153
   -0.7501   -0.3706    0.3679    0.4058

S =

   25.4624         0         0
         0    1.2907         0
         0         0    0.0000
         0         0         0

V =
   -0.5045   -0.7608   -0.4082
   -0.5745   -0.0571    0.8165
   -0.6445    0.6465   -0.4082


U =
   -0.1409    0.8247    0.5477
   -0.3439    0.4263   -0.7276
   -0.5470    0.0278   -0.1880
   -0.7501   -0.3706    0.3679

S =
   25.4624         0         0
         0    1.2907         0
         0         0    0.0000


V =
   -0.5045   -0.7608   -0.4082
   -0.5745   -0.0571    0.8165
   -0.6445    0.6465   -0.4082

>> 

5. CHOL分解

Cholesky分解是把一个对称正定矩阵A
表示为一个上三角阵R与其转置的乘积,
即 A=R*R’
在MATLAB中,Cholesky分解可通过
chol函数来实现。

>> A=[4 -1 -1;-1 4.25 2.75;1 2.75 3.5];
B=[0 4 0;3 0 1;0 1 3];
R=chol(A),R1=chol(B)

R =

    2.0000   -0.5000   -0.5000
         0    2.0000    1.2500
         0         0    1.2990
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐