前言 :
- 假設 A 為 mxn 矩陣, 則 At 為 nxm 矩陣, 對每一個 A(i,j) = At(j,i) 則稱At 為 A 的轉置矩陣.
- 而AT之轉換矩陣很明顯的又是A. 所以對矩陣作兩次轉置會得到原來矩陣.
- 若矩陣C是兩矩陣A和B之乘積,則C的轉換矩陣會等於A和B之轉換矩陣調換順序後之乘積。也就是說,若 :
範例代碼 :
* ch02.h 代碼 :
* ch02.cpp 代碼 :
* 設置與顯示矩陣內容代碼 :
* 呼叫矩陣轉置API 範例代碼 :
執行結果 :
- 假設 A 為 mxn 矩陣, 則 At 為 nxm 矩陣, 對每一個 A(i,j) = At(j,i) 則稱At 為 A 的轉置矩陣.
- 而AT之轉換矩陣很明顯的又是A. 所以對矩陣作兩次轉置會得到原來矩陣.
- 若矩陣C是兩矩陣A和B之乘積,則C的轉換矩陣會等於A和B之轉換矩陣調換順序後之乘積。也就是說,若 :
範例代碼 :
* ch02.h 代碼 :
- #include
- using namespace std;
- /*
- * As ch02_03.cpp
- * Do matrix reverse. matrixA[MxN] -->Reverse-> matrixRA[NxM]
- */
- void MatrixReverse(int* matrixA, int* matrixRA, int M, int N);
- #include "ch02.h"
- void MatrixReverse(int* matrixA, int* matrixRA, int M, int N) {
- if(M<=0 || N <=0) {
- cout << "[ 錯誤:矩陣維數不可以小於等於0 ]" << endl;
- }
- for(int i=0;i
- for(int j=0;j
- matrixRA[j*M+i] = matrixA[i*N+j];
- }
- #include "ch02.h"
- /*
- * 設置矩陣 matrix[MxN]
- */
- void _setMatrix(int* matrix, int M, int N) {
- cout << "[ 請輸入矩陣內容 ]" << endl;
- for(int i=1; i<= M ; i++) {
- for(int j=1; j<=N ; j++) {
- cout << "m" << i << j << "=";
- cin >> matrix[(i-1)*N +(j-1)];
- }
- }
- }
- /*
- * 顯示矩陣 matrix[MxN] 並有前置訊息(message)顯示
- */
- void _showMatrix(char* message, int* matrix, int M, int N) {
- cout << message << endl;
- for(int i=0; i
- for(int j=0; j
- cout << matrix[i*N + j] << "\t";
- cout << endl;
- }
- }
- //Do Matrix Reverse
- int M,N;
- cout << "[ 請輸入MxN 矩陣的維度 ]" << endl;
- cout << "請輸入維度M: ";
- cin >> M;
- cout << "請輸入維度N: ";
- cin >> N;
- int *arrA = new int[M*N];
- int *arrB = new int[M*N];
- _setMatrix(arrA, M, N);
- _showMatrix("[ 輸入矩陣內容為 ]",arrA, M, N);
- //進行矩陣轉置
- MatrixReverse(arrA, arrB, M, N);
- _showMatrix("[ 轉置後矩陣內容為 ]",arrB, N, M);
執行結果 :
This message was edited 4 times. Last update was at 16/03/2010 17:12:05
沒有留言:
張貼留言