www.pudn.com > AdaBoost_weaklearner_1.rar > matrix.h


#ifndef __MATRIX_H__ 
#define __MATRIX_H__ 
#include  
 
typedef double T; 
 
class Matrix 
{ 
//private: 
	T** element; 
	int rows; 
	int cols; 
 
	void alloc(void); 
	void release(void); 
 
	void toZero(void); 
	void toOne(void); 
	void toUnit(void);								// set to identity matrix 
	void toUpper(void); 
	T cofact(int r, int c) const; 
	 
	Matrix& swapRow(int r1, int r2, int c); 
	Matrix& operator += (const Matrix& m); 
	Matrix& operator -= (const Matrix& m); 
	Matrix& operator *= (const T& c); 
	void reptError (char* errorMsg) const; 
     
public: 
	Matrix() { rows=cols=0; } 
	Matrix(int r, int c); 
	Matrix(const Matrix& m);						// copy constructor 
	~Matrix(); 
 
	int row(void) const { return rows; } 
	int col(void) const { return cols; } 
	void print (void) const; 
    void minor(int r, int c, Matrix& m) const; 
	bool isNull(void); 
	bool isSquare(void) const { return (rows==cols) ? true:false; }  
 
	Matrix operator + (const Matrix& m) const; 
	Matrix operator - (const Matrix& m) const; 
	Matrix operator * (const T& c) const; 
	Matrix operator > (const T& c) const; 
	Matrix& operator>= (const T& c); 
	Matrix operator * (const Matrix& m) const; 
	Matrix operator / (const Matrix& m) const; 
	Matrix& operator = (const Matrix& m); 
	T operator () (int i, int j) const;				// get element[i][j] 
	bool operator == (const Matrix& m) const; 
	bool operator != (const Matrix& m); 
 
	T det (void) const;								// find determinant 
	void set (int i, int j, T val);					// set element[i][j] 
	void ones(int i, int j, T val, int scaler); 
	void zeros(int i, int j); 
	void partOfMatrix(int r, int c, Matrix& m) const; 
	void partOfMatrixFromEnd(int r_train, int step,int c,Matrix& m) const; 
	void partOfMatrixNext(int r, int c, int step, Matrix& m) const; 
	void specificPartOfMatrix(Matrix& m,int r, int c); 
	void ScalarMinusMatrix(double k, Matrix& m) const; 
	void matrixAbs(Matrix& m) const; 
	void matrixExp(Matrix& m) const; 
	void matrixLog(Matrix& m) const; 
	void setValue (int tt, T val); 
	void matrixTranspose (int r, int c, const Matrix& m) const; 
	void MatrixMultiMatrix (const Matrix& m,const Matrix& n) const; 
	//void matrixMinusMatrix (Matrix& n, Matrix& m); 
	void matrixMinusMatrix (const Matrix& m, const Matrix& n) const; 
	void matrixMinusSclar (double scalar, Matrix& m); 
	void MatrixMultiScalar (double scalar, Matrix& m); 
	void matrixdDivisonScalar(double scalar, const Matrix& m) const; 
	void scalarDivisonScalar(double scalar_1, double scalar_2, const Matrix& m) const; 
	void copyToMatrix(int tt, Matrix& m) const; 
	void copyMatrixToMatrix (Matrix& m); 
	int matrixMax(double *val, int *index, Matrix& m) const; 
	void matrixToArray(double array[10], Matrix& m) const; 
	void matrixToArrayold(double array[10], Matrix& m) const; 
	int getValue (int j,double *val, Matrix& m) const; 
	int getValueSpecific(int i, int j,double *val, Matrix& m) const; 
	int matrixSumCol(double *sum,  Matrix& m) const; 
	int matrixSumRow(double *sum,  Matrix& m) const; 
	int matrixCompareAndSet(int *i_index,int c_train, Matrix& m) const; 
	int matrixCompareAndSetfor_t(int k, int *t_index, int c_train, Matrix& m) const; 
	void ScalarMultiMatrix (double scalar, Matrix& m); 
	void matrixSize(int *i, int *j, Matrix& m) const; 
	//void MultiMatrix(int r, int c, const Matrix& m) const; 
	Matrix transpose (void) const; 
	//Matrix copy (Matrix& m) const; 
    void copy (int tt, Matrix& m) const; 
	void adjoin(Matrix& m) const; 
	Matrix inverse (void) const; 
 
	void readFile(char* file_name); 
	void writeFile(char* file_name); 
 
	// friend function for the List class // 
	friend istream& operator>> ( istream& is, Matrix& m ); 
	friend ostream& operator<< ( ostream& os, const Matrix& m ); 
}; 
 
 
#endif	// __MATRIX_H__ //