더북(TheBook)

행렬의 행과 열을 서로 교환해서 만드는 전치 행렬(transpose matrix)Mat::t() 멤버 함수를 이용하여 구할 수 있습니다. Mat::t() 함수 원형은 다음과 같습니다.

MatExpr Mat::t() const;

반환값

전치 행렬에 대한 행렬 표현식

 

만약 전치 행렬 연산의 입력 행렬이 정방 행렬(square matrix)이면 단순히 행렬 원소의 행과 열 위치만 서로 바꿉니다. 그러나 입력 행렬 크기가 M×N이고 M≠N이라면 Mat::t() 함수에 의해 구해지는 전치 행렬의 크기는 N×M으로 변경됩니다.

지금까지 설명한 행렬 연산 연산자와 함수를 사용하는 예제 코드를 살펴보겠습니다. 코드 3-12에 나타난 MatOp6() 함수는 작은 크기의 행렬로부터 역행렬과 전치 행렬을 구하고, 행렬의 덧셈 및 곱셈 연산을 수행하는 코드 작성 방법을 보여 줍니다.

코드 3-12 Mat 클래스를 이용한 간단한 행렬 연산 [ch03/MatOp]

01    void MatOp6()
02    {
03        float data[] = { 1, 1, 2, 3 };
04        Mat mat1(2, 2, CV_32FC1, data);
05        cout << "mat1:\n" << mat1 << endl;
06     
07        Mat mat2 = mat1.inv();
08        cout << "mat2:\n" << mat2 << endl;
09     
10        cout << "mat1.t():\n" << mat1.t() << endl;
11        cout << "mat1 + 3:\n" << mat1 + 3 << endl;
12        cout << "mat1 + mat2:\n" << mat1 + mat2 << endl;
13        cout << "mat1 * mat2:\n" << mat1 * mat2 << endl;
14    }

 

3~4행 data 배열을 원소로 사용하는 2×2 크기의 행렬 mat1을 생성합니다.

7행 mat1 행렬의 역행렬을 구하여 mat2에 저장합니다.

10행 mat1 행렬의 전치 행렬을 구하여 화면에 출력합니다.

11~13행 연산자 재정의를 이용하여 행렬의 산술 연산을 수행하고, 그 결과를 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.