Click or drag to resize
XDL

XMatREAL64 Class

double 형의 matrix 데이터 구조에 대한 클래스이다.
Inheritance Hierarchy

Namespace:  Pixoneer.NXDL
Assembly:  NXDL (in NXDL.dll) Version: 2.0.3.30
Syntax
C#
public class XMatREAL64 : IDisposable

The XMatREAL64 type exposes the following members.

Constructors
  NameDescription
Public methodXMatREAL64
XMatREAL64 객체를 생성하는 기본 생성자이다.
Public methodXMatREAL64(XMat<double>*)
Public methodXMatREAL64(Int32, Int32)
XMatREAL64 객체를 생성하는 기본 생성자이며, 배열의 크기를 row와 column으로 설정하고 0으로 초기화한다.
Top
Properties
  NameDescription
Public propertyColumnSize
행의 크기를 가져온다.
Public propertyRowSize
열의 크기를 가져온다.
Top
Methods
  NameDescription
Public methodAlloc
행렬의 크기로 배열의 메모리를 할당한다.
Public methodCopy
매개변수 행렬의 값으로 설정한다.
Public methodFree
XMatREAL64 객체의 메모리를 해제한다.
Public methodGetAt
행렬의 원소값을 가져온다.
Public methodIdentity
단위행렬로 초기화한다. 정방행렬이 아닌 경우 가능한 대각 요소만 1로 한다.
Public methodInverse
가우스 소거법을 이용하여 역행렬로 변환한다. (배정도 실수 유효숫자를 고려하여 부정확한 결과가 예상되는 경우 InverseP() 사용을 추천함)
Public methodInverseL
다음과 같이 행렬의 왼쪽에 곱해서 단위행렬이 얻어지는 행렬로 변환한다. Left Inverse: ((AT*A)'*AT)*A = I
Public methodInverseP
특이값 분해(SVD)를 통해 의사 역행렬(Pseudo inverse)로 변환한다.
Public methodInverseR
다음과 같이 행렬의 오른쪽에 곱해서 단위행렬이 얻어지는 행렬로 변환한다. Right Inverse: A*(AT*(A*AT)' = I
Public methodSetAt
행렬의 원소값을 설정한다.
Public methodTranspose
행렬의 행과 열의 요소를 바꾼다.
Public methodZerorize
행렬의 값을 0으로 초기화한다.
Top
Operators
  NameDescription
Public operatorStatic memberAddition
행렬의 더하기 연산을 수행하고 결과를 반환한다.
Public operatorStatic memberDivision
행렬의 나누기 연산을 수행하고 결과를 반환한다.
Public operatorStatic memberMultiply(XMatREAL64, XMatREAL64)
행렬의 곱하기 연산을 수행하고 결과를 반환한다.
Public operatorStatic memberMultiply(XMatREAL64, Double)
행렬의 곱하기 연산을 수행하고 결과를 반환한다.
Public operatorStatic memberSubtraction
행렬의 빼기 연산을 수행하고 결과를 반환한다.
Top
Examples
다음은 XMatREAL64를 사용하는 방법에 대한 예제이다.
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));
    }
}
See Also