矩阵转置与矩阵相乘[通俗易懂]

2022-06-19 13:18:32 浏览数 (1)

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说矩阵转置与矩阵相乘[通俗易懂],希望能够帮助大家进步!!!

前言

写这篇博客的原因是为了记录一下矩阵转置与矩阵相乘的实现代码,供日后不时之需。直接原因是今晚(2016.09.13)参加了百度 2017 校招的笔试(C 岗),里面就有一道矩阵转置后相乘的在线编程题。考虑到日后笔试可能会用到,特此记录,也希望能够帮助到需要的网友。

今晚的百度笔试还有一个道求矩形方格中房子的数量,可以用类似于求迷宫中寻找可行路径的深度优先搜索(DFS)加回溯法来求解,幸好之前研究过迷宫问题并记录下来写成博客,要不然,又悲剧了,短时间内很难写出那么多代码!

1.矩阵转置

1.1 简介

把矩阵 A 的行换成同序数的列得到的新矩阵,叫做 A 的转置矩阵(Transpose of a Matrix),记作 A T A^T AT。

例如:

因此,转置矩阵的特点:

(1)转置矩阵的行数等于原矩阵的列数,转置矩阵的列数等于原矩阵的行数;

(2)转置矩阵下标(i,j)的元素对应于原矩阵下标(j,i)的元素。

1.2 实现

使用二维数组作为矩阵的存储结构,根据转置矩阵的特点,很容易得到转置矩阵。

代码语言:javascript复制
/**************************************************
*@para:matrix:原矩阵;row:矩阵行数;column:矩阵列数
*@ret:返回转置矩阵
**************************************************/
int** getTransposeMatrix(int** matrix,int row,int column){
   int** matrixR=new int*[columns];
   for(int i=0;i<columns;  i){
        matrixR[i]=new int[rows];
   }
   
   for(int i=0;i<row;  i){
        for(int j=0;j<column;  j){
            matrixR[j][i]=matrix[i][j];
        }
   }
   return matrixR;
}

2.矩阵相乘

2.1 简介

设 A 为 m × p mtimes p m×p 的矩阵,B 为 p × n ptimes n p×n 的矩阵,那么称 m × n mtimes n m×n 的矩阵 C 为矩阵 A 与 B 的乘积,记作 C=AB ,其中矩阵 C 中的第 i 行第 j 列元素可以表示为:

示例如下:

矩阵相乘的特点:

(1)当矩阵 A 的列数等于矩阵 B 的行数时,A 与 B 才可以相乘。

(2)乘积 C 的第 m 行第 n 列的元素等于矩阵 A 的第 m 行的元素与矩阵 B 的第 n 列对应元素乘积之和。

(3)矩阵 C 的行数等于矩阵 A 的行数,C 的列数等于 B 的列数。

2.2 示例代码

代码语言:javascript复制
/********************************************
*@para:A:矩阵A;B:矩阵B;C:相乘结果矩阵;rowA:A的行数;columnB:B的列数;columnA:A的列数
*@ret:void 
********************************************/
void matrixMul(int **A, int **B, int **C, int rowA, int columnB, int columnA){
    for (int i=0;i<rowA;i  ){
        for (int j=0; j<columnB;j  ){
            C[i][j] = 0;
            for (int k=0;k<columnA;k  ){
                C[i][j] =A[i][k]*B[k][j];
            }
         }
     }
}

参考文献

1(https://javajgs.com/go?url=http://baike.baidu.com/link?url=8Xb6rpQ-rPjvn5r2GEuOZAoLVZ9R7jSc8W2OROQra5wT5T43ZAtPIlpb50C1O04wHAQHKPZk0fN466VtShpxmq)

2(https://javajgs.com/go?url=http://baike.baidu.com/link?url=zFf22XeAjgBj8_ZEooEDaYsT8vzafrBCD8lUn9180FFavn5pbJUjnXisQRygt3smdOk1o9OQ8vYDIsFrzcoI-a)

今天文章到此就结束了,感谢您的阅读,Java架构师必看祝您升职加薪,年年好运。

0 人点赞