Click here to Skip to main content
Click here to Skip to main content
Go to top

A templated Matrix class using 2d dynamic array declaration & having The most needed Mathematical functions of Matrix & also all the operators needed in standard c++ (without using any vc commands)

, 22 Feb 2007
Rate this:
Please Sign up or sign in to vote.
This program is written By Shahin Namini

Introduction

This Matrix class is a templated class that can be initialized as any kind of numeric types(int, double,float,& etc). it includes Inverse & determinant functions (which are not so easy to write the code) & also all the operators needed for a Matrix class like Multiplying 2 matrix or multiplying a digit to the matrix. it is able to be any size & also it is easy to use.

Instruction

the uploaded file check.zip contains a file which shows how the Matrix can get initialized & how the operators or functions work. Note that parentheses is maybe the most important operator.it allows you to get access to the array elements ,as :

matrix1(2,0)=5;

Member functions of class Matrix

These are all the member functions & operators of the class :

template<class T>
class Matrix
{
public:

  1. Matrix(int Row_Size,int Column_Size)
  2. Matrix() >
  3. Matrix(const Matrix<T> &)
  4. ~Matrix(void)
  5. void Set_Element(int Row_,int Column,const T& Value)
  6. T Get_Element(int Row ,int Column) const
  7. bool operator!() const;
  8. const Matrix<T> & operator=(const Matrix<T> &)
  9. const Matrix<T> & operator=(const T&)
  10. bool operator==(const Matrix<T> &) const
  11. bool operator==(const T & ) const
  12. bool operator!=(const Matrix<T> & second) const
  13. bool operator!=(const T & number)
  14. T &operator() (int Row,int Column)
  15. Matrix<T> operator+(const T &)
  16. Matrix<T> operator+(const Matrix<T> &)
  17. const Matrix<T> &operator+=(const T&)
  18. const Matrix<T> & operator+=(const Matrix<T> &)
  19. Matrix<T> operator-(const T&)
  20. Matrix<T> operator - (const Matrix<T> &)
  21. const Matrix<T> & operator -=(const T & )
  22. const Matrix<T> & operator -=(Matrix<T> & )
  23. Matrix<T> operator*(const T&)
  24. Matrix<T> operator* (const Matrix<T> &)
  25. const Matrix<T> & operator*=(const T&)
  26. const Matrix<T> & operator*=(const Matrix<T> &)
  27. void Transposed();>
  28. Matrix<T> GetTransposed() const
  29. bool Inverse();>
  30. Matrix<T> GetInversed() const
  31. double Det() const
  32. void Set_Size(int RowSize,int ColumnSize)
  33. const int& Get_ColumnSize() const
  34. const int & Get_RowSize() const
private:
  • int m_RowSize
  • int m_ColumnSize
  • T**m_Data

};

Notes


note:The returned argument of Inverse (a boolean ) Shows weather the matrix is Invertible & if it is ,inverts the Matrix


note:I have written this code in vc 2005 but it is not a managed code.if you compile it in vc6 you will see some errors that as an instance i is redeclared .thats because vc6 is alittle differant as when you declare i this way :for (int i=0;i<5;i++){ /*statements*/}

i is destroyed after for statement but in vc6 it is a declared variable even after for statement.but it is easy to change it to vc6 by debugging such errors in vc.you can do it yourself.


note:the only code i have not written my self is determinant because i have found a great one being written by Paul Bourke .to find the original code go to http://local.wasp.uwa.edu.au/~pbourke/other/determinant/

Some Technics that are used in Class

to announce one,I have to point to the way the element array (m_Data) is declared using new command:

consider the m_RowSize & m_ColumnSize are given

m_Data=new T* [m_RowSize];

for(int i=0;i<m_RowSize;i++)

m_ColumnSize=new T [m_ColumnSize];

HOPE YOU USE & ENJOY IT

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

shahin namini
CEO
Iran (Islamic Republic Of) Iran (Islamic Republic Of)
just a Geospatial Information Systems Specialist who loves programming & denotes his life this way.

Comments and Discussions

 
QuestionI think there is a bug [modified] Pinmembersizheng13-Aug-07 19:54 
AnswerRe: I think there is a bug Pinmembershahin namini18-Aug-07 21:09 
QuestionA problem Pinmembercclever10-Apr-07 22:48 
AnswerRe: A problem Pinmembershahin namini12-Apr-07 1:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 22 Feb 2007
Article Copyright 2007 by shahin namini
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid