1. 程式人生 > >線性代數-矩陣-轉置 C和C++的實現

線性代數-矩陣-轉置 C和C++的實現

說了 cnblogs typename tsp name add type get swap

原理解析:

本節介紹矩陣的轉置。矩陣的轉置即將矩陣的行和列元素調換,即原來第二行第一列(用C21表示,後同)與第一行第二列(C12)元素調換位置,原來c31與C13調換。即cij與cji調換 。

(此處補圖說明)

C++語言:

首先我們想到的是把第i行第j列取出來與第j行第i列調換,這種思路很簡單就不多說了。

這裏提供另一個思路,對整行整列進行操作,方法如下:

  1. 使用getSpecifiedRow()把本矩陣中的第i行取出來放在向量tempVec中;
  2. 使用 addOneColumToBack()把上述取出來的tempVec放入臨時矩陣tempMatrix的列中;
  3. 用臨時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; }

線性代數-矩陣-轉置 C和C++的實現