矩阵转置与矩阵相乘
来源:互联网 发布:qq三国修复数据 编辑:程序博客网 时间:2024/05/21 22:35
前言
写这篇博客的原因是为了记录一下矩阵转置与矩阵相乘的实现代码,供日后不时之需。直接原因是今晚(2016.09.13)参加了百度2017校招的笔试(C++岗),里面就有一道矩阵转置后相乘的在线编程题。考虑到日后笔试可能会用到,特此记录,也希望能够帮助到需要的网友。
今晚的百度笔试还有一个道求矩形方格中房子的数量,可以用类似于求迷宫中寻找可行路径的深度优先搜索(DFS)加回溯法来求解,幸好之前研究过迷宫问题并记录下来写成博客,要不然,又悲剧了,短时间内很难写出那么多代码!
1.转置矩阵
1.1转置矩阵简介
把矩阵A的行换成同序数的列得到的新矩阵,叫做A的转置矩阵(Transpose of a Matrix),记作
例如:
因此,转置矩阵的特点:
(1)转置矩阵的行数是原矩阵的列数,转置矩阵的列数是原矩阵的行数;
(2)转置矩阵下标(i,j)的元素对应于原矩阵下标(j,i)的元素。
1.2实现
使用二维数组作为矩阵的存储结构,根据转置矩阵的特点,很容易得到转置矩阵。
/***************************************************@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为
示例如下:
矩阵相乘的特点:
(1)当矩阵A的列数等于矩阵B的行数时,A与B才可以相乘。
(2)乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
(3)矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
2.2示例代码
/*********************************************@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]转置矩阵 百度百科
[2]矩阵乘法 百度百科
3 0
- 矩阵转置与矩阵相乘
- 向量与矩阵相乘
- 求矩阵的转置矩阵和两个矩阵相乘
- Matrix 矩阵,单位矩阵,Transposition,矩阵与矩阵相乘
- 数组与矩阵(1)_矩阵相乘
- 向量与矩阵的相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- DataReader和DataSet的异同
- LINQ to SQL语句之DataContext
- HDU 5726 求gcd=k的区间的个数 (二分+RMQ)
- stringbuilder
- hibernate参数设置一览表
- 矩阵转置与矩阵相乘
- 二维数组和指针数组
- 什么是jsonp
- 你需要知道的枚举类
- 【VS开发】error C2220: 警告被视为错误 - 没有生成“object”文件
- HDU1029:Ignatius and the Princess IV
- poj1160 Post Office
- C语言可变参数
- 关于Service中的耗时操作