原理解析:
本节介绍矩阵的转置。矩阵的转置即将矩阵的行和列元素调换,即原来第二行第一列(用C21表示,后同)与第一行第二列(C12)元素调换位置,原来c31与C13调换。即cij与cji调换 。
(此处补图说明)
C++语言:
首先我们想到的是把第i行第j列取出来与第j行第i列调换,这种思路很简单就不多说了。
这里提供另一个思路,对整行整列进行操作,方法如下:
- 使用getSpecifiedRow()把本矩阵中的第i行取出来放在向量tempVec中;
- 使用 addOneColumToBack()把上述取出来的tempVec放入临时矩阵tempMatrix的列中;
- 用临时tempMatrix取代本矩阵;
template <typename T>
Matrix<T> Matrix<T>::transpose()
{
Matrix<T> tempMatrix;
vector<T> tempVec;
/*get transpose*/
for(int i=0;i<m_iColumns;i++)
{
this->getSpecifiedRow(i,&tempVec);
tempMatrix.addOneColumToBack(tempVec);
}
/*swap rows and columns*/
m_vecMatrix = tempMatrix.m_vecMatrix;
int temp = m_iColumns;
m_iColumns = m_iRows;
m_iRows = temp;
return tempMatrix;
}
原文链接: https://www.cnblogs.com/HongYi-Liang/p/7287495.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/257958
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!