矩陣轉置與矩陣相乘


1.轉置矩陣

1.1轉置矩陣簡介

把矩陣A的行換成同序數的列得到的新矩陣,叫做A的轉置矩陣(Transpose of a Matrix),記作ATAT。

例如: 

因此,轉置矩陣的特點: 
(1)轉置矩陣的行數是原矩陣的列數,轉置矩陣的列數是原矩陣的行數; 
(2)轉置矩陣下標(i,j)的元素對應於原矩陣下標(j,i)的元素。

1.2實現

使用二維數組作為矩陣的存儲結構,根據轉置矩陣的特點,很容易得到轉置矩陣。

  1.  
    /**************************************************
  2.  
    *@para:matrix:原矩陣;row:矩陣行數;column:矩陣列數
  3.  
    *@ret:返回轉置矩陣
  4.  
    **************************************************/
  5.  
    int** getTransposeMatrix(int** matrix,int row,int column){
  6.  
    int** matrixR=new int*[columns];
  7.  
    for(int i=0;i<columns;++i){
  8.  
    matrixR[i]= new int[rows];
  9.  
    }
  10.  
     
  11.  
    for(int i=0;i<row;++i){
  12.  
    for(int j=0;j<column;++j){
  13.  
    matrixR[j][i]=matrix[i][j];
  14.  
    }
  15.  
    }
  16.  
    return matrixR;
  17.  
    }

2.矩陣相乘

2.1矩陣相乘簡介

矩陣相乘的特點: 
(1)當矩陣A的列數等於矩陣B的行數時,A與B才可以相乘。 
(2)乘積C的第m行第n列的元素等於矩陣A的第m行的元素與矩陣B的第n列對應元素乘積之和。 
(3)矩陣C的行數等於矩陣A的行數,C的列數等於B的列數。

2.2示例代碼

  1.  
    /********************************************
  2.  
    *@para:A:矩陣A;B:矩陣B;C:相乘結果矩陣;rowA:A的行數;columnB:B的列數;columnA:A的列數
  3.  
    *@ret:void
  4.  
    ********************************************/
  5.  
    void matrixMul(int **A, int **B, int **C, int rowA, int columnB, int columnA){
  6.  
    for (int i=0;i<rowA;i++){
  7.  
    for (int j=0; j<columnB;j++){
  8.  
    C[i][j] = 0;
  9.  
    for (int k=0;k<columnA;k++){
  10.  
    C[i][j]+=A[i][k]*B[k][j];
  11.  
    }
  12.  
    }
  13.  
    }
  14.  
    }

3矩陣相乘后轉置

一個矩陣的轉置與它相乘,為什么是對稱陣?

證明它們的乘積的轉置等於其本身就可以了。(A^T*A)^T=A^T*(A^T)^T=A^T*A


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM