浅论分块矩阵相乘

从向量相乘说起

假设我们有两个向量【注:本文所言及的向量均指列向量 α m × 1 , β n × 1 \alpha_{m\times 1},\beta_{n\times 1} αm×1,βn×1
那么我们知道:

[ β ] ⋅ [ α ] [\beta]\cdot [\alpha] [β][α] α m × 1 \alpha_{m\times 1} αm×1 α 1 × m ′ \alpha^{\prime}_{1\times m} α1×m
β n × 1 \beta_{n\times 1} βn×1m=1,是个数。否则无意义 A n × m A_{n\times m} An×m
β 1 × n ′ \beta^{\prime}_{1\times n} β1×n n 1 × 1 n_{1\times1} n1×1(即一个数)n=1,是个数。否则无意义

向量乘矩阵

假设我们有一个矩阵 B m × n B_{m\times n} Bm×n。此处排除掉 m = 1 , n = 1 m=1,n=1 m=1,n=1的情况。那么我们只能做如下的运算:

[ matrix ] ⋅ [ vector ] [\text{matrix}]\cdot [\text{vector}] [matrix][vector] α 1 × m ′ \alpha^{\prime}_{1\times m} α1×m β n × 1 \beta_{n\times 1} βn×1
B m × n B_{m\times n} Bm×n α ′ B \alpha^{\prime}B αB,行向量 B β B\beta Bβ,列向量

分块矩阵相乘

这个时候有力的工具就是把矩阵视作元素。
记矩阵有 A , B , P A,B,P A,B,P三个

  • 设想有如下形式的矩阵乘法:
    P ⋅ [ A B ] P\cdot [A \qquad B] P[AB]
    我们把每个矩阵当作一个数,那么 P P P就是一个“1×1”的“数”。【注:P的维度可以是mxn,这里是只是看做一个数】。
    那么 [ A B ] [A \qquad B] [AB]就是一个有两个数的行向量了。
    根据矩阵乘法的原理:“1×1” x “1×2” = “1×2”
    结果是一个”1×2″的 “行向量”。要注意,这里的行向量里的元素是矩阵。
    那么我们有:
    P ⋅ [ A B ] = [ P A P B ] P\cdot [A \qquad B]=[PA \qquad PB] P[AB]=[PAPB]

  • 我们再考虑如下形式:
    [ A B ] ⋅ P [A \qquad B]\cdot P [AB]P
    根据上面的考量,这里相当于是
    “1×2” x “1×1”
    明显不能这么运算!
    但我们知道,当 A m × k , B m × p A_{m\times k },B_{m\times p} Am×k,Bm×p时,令 C m × ( k + p ) = [ A B ] C_{m\times (k+p)}=[A\qquad B] Cm×(k+p)=[AB],只要 P ( k + p ) × n P_{(k+p)\times n} P(k+p)×n,上面这个运算其实是可以进行的,并且结果为: C m × ( k + p ) P ( k + p ) × n = D m × n C_{m\times (k+p)}P_{(k+p)\times n}=D_{m\times n} Cm×(k+p)P(k+p)×n=Dm×n
    为了使运算能够有意义,我们必须对P矩阵做拆分,让他也变成一个分块矩阵。
    P = [ P 1 P 2 ] P=\begin{bmatrix} P_1 \\ P_2 \end{bmatrix} P=[P1P2]
    则:
    [ A B ] ⋅ P = [ A B ] [ P 1 P 2 ] = A P 1 + B P 2 [A \qquad B]\cdot P= [A \qquad B]\begin{bmatrix} P_1 \\ P_2 \end{bmatrix}=AP_1+BP_2 [AB]P=[AB][P1P2]=AP1+BP2

  • 类似地,我们有:

P ⋅ [ A B ] P\cdot \begin{bmatrix} A \\ B \end{bmatrix} P[AB]
“1×1” x”2×1″
为有意义:
P = [ P a P b ] P=[P_a\qquad P_b] P=[PaPb]
则:
P ⋅ [ A B ] = [ P a P b ] [ A B ] = P a A + P b B P\cdot \begin{bmatrix} A \\ B \end{bmatrix}=[P_a\qquad P_b]\begin{bmatrix} A \\ B \end{bmatrix}=P_aA+P_bB P[AB]=[PaPb][AB]=PaA+PbB

  • 对于

[ A B ] ⋅ P \begin{bmatrix} A \\ B \end{bmatrix}\cdot P [AB]P
“2×1” x “1×1”
立即推:

[ A B ] ⋅ P = [ A P B P ] \begin{bmatrix} A \\ B \end{bmatrix}\cdot P=\begin{bmatrix} AP \\ BP \end{bmatrix} [AB]P=[APBP]

如有错误,欢迎指出!

    原文作者:想成为大数据分析师的统计人
    原文地址: https://blog.csdn.net/qq_44081205/article/details/105602533
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞