矩阵向量化
矩阵向量化(vectorization of a matrix)按约定的顺序将矩阵元素排成一个列向量。本文采用按列堆叠:若 ,依次把第一列、第二列直到第 列接在一起,记为 。向量化不改变元素,但改变了索引的组织方式,使对矩阵的线性运算可以写成普通线性方程。[1]
例如 若按行堆叠,结果会变成 。两种约定都能使用,但同一条恒等式中的堆叠方式必须一致。
从双索引到单索引
矩阵元素 在向量中的位置为 ,因为前面的 列各占 个位置。这个公式给出一个双射,所以向量化是从矩阵空间到 的线性同构。逆操作只需按每 个元素切成一列;不说明原来的行数,单靠长度不能唯一恢复矩阵形状。
对同形矩阵 ,元素只重排,故 特别地 ,右边为弗罗贝尼乌斯范数。这说明重排保留元素平方和,而不是说矩阵的谱范数也等于这个向量长度。
两侧乘法的向量化恒等式
设 、、,则 其中 是克罗内克积。右边矩阵尺寸为 ,正好将输入的 个元素变为输出的 个元素。
逐项证明可以防止记错转置。左边在对应 的位置为 右边与输入 相乘的系数,位于克罗内克积的第 块、块内第 项,等于 。对全部 求和,便与左边相同。转置来自输出列 与输入列 的次序,并非装饰符号。
主例再取 、。先普通相乘得到 向量化结果为 。另一方面 是以 为对角块的分块矩阵,将它乘以 ,前一块得到 ,后一块得到 ,两条路径一致。
从矩阵方程到线性方程
对方阵 、,矩阵方程 可写成 这是分别对 与 使用前一恒等式,再利用向量化的线性性。它把 个未知元素视为一个向量的坐标。
变式取 、、。按列堆叠后,系数矩阵为 ,右端为 ,所以解向量是 ,恢复为主例的 。分母中的四、五、五、六分别来自对应行、列的特征值之和;若其中某个和为零,便不能在那一项直接相除。
转置、行优先约定与实现边界
矩阵转置对应一个置换矩阵 :。对二阶主例,它交换向量的第二、第三项。若使用按行堆叠,相当于向量化转置,因此两侧乘法公式中的克罗内克因子和次序也随之改变,不能混用列优先公式。
向量化是代数表示,不意味着一定要显式构建大矩阵。原本两个小矩阵乘法可利用结构完成;形成 可能需要存储大量元素。也不能从“元素顺序确定”推断程序中的重塑必为零复制:底层存储是行优先、列优先还是带步幅的视图,会影响实际内存操作。数学恒等式应先固定顺序,再由实现选择合适的数据布局。
参考文献
- ↑ Kaare Brandt Petersen、Michael Syskind Pedersen,The Matrix Cookbook,Vectorization 节。