전치 행렬
: 기존 행렬의 행과 열을 교환하여 얻은 행렬, MijT = Mji
행과 열을 교환하기 때문에 기존 행렬과 크기 달라진다. m X n 행렬 -> n X m 행렬
C++로 구현하기
Matrix 클래스의 메소드로 transpose()를 추가했다.
#include <iostream>
#include "matrix.h"
using namespace std;
int main() {
Matrix m1(3, 4);
printf("기존 행렬\n");
m1.print();
m1.transpose();
printf("전치 행렬\n");
m1.print();
return 0;
}
...
class Matrix {
int **mat;
int row;
int col;
public:
...
void transpose() {
int **ret = (int **)malloc(sizeof(int *) * col);
for (int i = 0; i < col; i++)
ret[i] = (int *)malloc(sizeof(int) * row);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++)
ret[j][i] = mat[i][j];
}
int **tempMat = mat;
mat = ret;
ret = tempMat;
for (int i = 0; i < row; i++)
free(ret[i]);
free(ret);
int temp = row;
row = col;
col = temp;
}
...
};
...
'Computer Science > 선형대수 with C++' 카테고리의 다른 글
[C/C++] 행렬의 연산 : 상등 (1) | 2024.05.02 |
---|---|
[C/C++] 단위행렬, 영행렬 (0) | 2024.05.02 |
[C/C++] 행렬 (0) | 2024.05.02 |