![]() | XMatREAL64 Class |
Namespace: Pixoneer.NXDL
public class XMatREAL64 : IDisposable
The XMatREAL64 type exposes the following members.
Name | Description | |
---|---|---|
![]() | XMatREAL64 | XMatREAL64 객체를 생성하는 기본 생성자이다. |
![]() | XMatREAL64(XMat<double>*) | |
![]() | XMatREAL64(Int32, Int32) | XMatREAL64 객체를 생성하는 기본 생성자이며, 배열의 크기를 row와 column으로 설정하고 0으로 초기화한다. |
Name | Description | |
---|---|---|
![]() | ColumnSize | 행의 크기를 가져온다. |
![]() | RowSize | 열의 크기를 가져온다. |
Name | Description | |
---|---|---|
![]() | Alloc | 행렬의 크기로 배열의 메모리를 할당한다. |
![]() | Copy | 매개변수 행렬의 값으로 설정한다. |
![]() | Free | XMatREAL64 객체의 메모리를 해제한다. |
![]() | GetAt | 행렬의 원소값을 가져온다. |
![]() | Identity | 단위행렬로 초기화한다. 정방행렬이 아닌 경우 가능한 대각 요소만 1로 한다. |
![]() | Inverse | 가우스 소거법을 이용하여 역행렬로 변환한다. (배정도 실수 유효숫자를 고려하여 부정확한 결과가 예상되는 경우 InverseP() 사용을 추천함) |
![]() | InverseL | 다음과 같이 행렬의 왼쪽에 곱해서 단위행렬이 얻어지는 행렬로 변환한다. Left Inverse: ((AT*A)'*AT)*A = I |
![]() | InverseP | 특이값 분해(SVD)를 통해 의사 역행렬(Pseudo inverse)로 변환한다. |
![]() | InverseR | 다음과 같이 행렬의 오른쪽에 곱해서 단위행렬이 얻어지는 행렬로 변환한다. Right Inverse: A*(AT*(A*AT)' = I |
![]() | SetAt | 행렬의 원소값을 설정한다. |
![]() | Transpose | 행렬의 행과 열의 요소를 바꾼다. |
![]() | Zerorize | 행렬의 값을 0으로 초기화한다. |
Name | Description | |
---|---|---|
![]() ![]() | Addition | 행렬의 더하기 연산을 수행하고 결과를 반환한다. |
![]() ![]() | Division | 행렬의 나누기 연산을 수행하고 결과를 반환한다. |
![]() ![]() | Multiply(XMatREAL64, XMatREAL64) | 행렬의 곱하기 연산을 수행하고 결과를 반환한다. |
![]() ![]() | Multiply(XMatREAL64, Double) | 행렬의 곱하기 연산을 수행하고 결과를 반환한다. |
![]() ![]() | Subtraction | 행렬의 빼기 연산을 수행하고 결과를 반환한다. |
XMatREAL64 matrix = new XMatREAL64(3, 3); int rsize = matrix.RowSize; int csize = matrix.ColumnSize; matrix.SetAt(0, 0, 0.232044); matrix.SetAt(0, 1, 0.924511); matrix.SetAt(0, 2, 0.93634); matrix.SetAt(1, 0, 0.881185); matrix.SetAt(1, 1, 0.05349); matrix.SetAt(1, 2, 0.158078); matrix.SetAt(2, 0, 0.891095); matrix.SetAt(2, 1, 0.40391); matrix.SetAt(2, 2, 0.778751); XMatREAL64 matrixInv = new XMatREAL64(); XMatREAL64 matrixTrans = new XMatREAL64(); matrixInv.Copy(matrix); matrixTrans.Copy(matrix); matrixTrans.Transpose(); double det = matrixInv.Inverse(); if (det == 0.0) Console.WriteLine("Inverse Failed"); for (int y = 0; y < matrixInv.RowSize; y++) { for (int x = 0; x < matrixInv.ColumnSize; x++) { Console.WriteLine("matrixInv (" + y + ", " + x + ") : " + matrixInv.GetAt(y, x)); } } for (int y = 0; y < matrixTrans.RowSize; y++) { for (int x = 0; x < matrixTrans.ColumnSize; x++) { Console.WriteLine("matrixTrans (" + y + ", " + x + ") : " + matrixTrans.GetAt(y, x)); } }