Secreta

행렬 연산을 위한 C++ 프로그래밍 - Matrix class 본문

Engineering/Technique

행렬 연산을 위한 C++ 프로그래밍 - Matrix class

준♡ 2010.06.29 17:27

자칭 암호학 전문 블로그라지만 여전히 관계 없는 포스팅만 이어지네요 ... ...
(암호학에도 선형대수 이론이 들어가니 엄밀히 말해 전혀 무관한것만은 아니지만요 ...)

이번 포스트는 ... 예전에 C++로 구현했던 Matrix class 입니다.

행렬연산을 많이 하는 프로그램을 만들다보니 어쩌다 ... ... class화 되어버렸지만,
+, -, ×, inverse, transpose 정도를 포함하게 되었습니다.
(inverse는 2×2 행렬 특화로 계산했지만, 나중에 가우스 소거법이나 그런걸 이용해서 확장하면 될 듯 싶지만요 ...)

class Matrix {

 

private:

    int      m_nRows;

    int      m_nCols;

    float    *m_pfMat;

 

public:

    Matrix();

    ~Matrix();

 

    Matrix(const Matrix &mxInput);

   

    void    Show();

    void    SetValue(int* pnValue, int nRows, int nCols);

    void    SetValue(float* pfValue, int nRows, int nCols);

    float   GetValue(int nRows, int nCols);

 

    Matrix&   operator =(const Matrix &mxInput);

    Matrix    operator +(const Matrix &mxInput) const;

    Matrix    operator -(const Matrix &mxInput) const;

    Matrix    operator *(const int nInput) const;

    Matrix    operator *(const float fInput) const;

    Matrix    operator *(const double dInput) const;

    Matrix    operator *(const Matrix &mxInput) const;

 

    friend    Matrix operator *(int nInput, Matrix &mxInput);

    friend    Matrix operator *(float fInput, Matrix &mxInput);

    friend    Matrix operator *(double dInput, Matrix &mxInput);

 

    Matrix    Trans();

    Matrix    Inv();

};


class 모양은 ... 대충 이정도가 될 듯 싶습니다 ...

멤버 함수 구현은 ... 아래와 같이 했습니다 ...

최근 몇 년 동안 C++은 쳐다도 안보고 C#만 봐왔는데 ...

C#이 편하긴 편하네요 ;;;

게다가 ... 과거의 유산은 다시보면 볼 수록 ... ... 부끄러울 따름 ... 이지요 -_-
4 Comments
댓글쓰기 폼