⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 一个实现3层BP人工神经网络的类
💻 H
字号:
// Matrix.h: 矩阵类的声明.
//---------------------------------------------------------------------------
#ifndef MatrixH
#define MatrixH
//---------------------------------------------------------------------------

//定义矩阵类
class TMatrix 
{
private:
        //矩阵的数据
	int m_nRows;				     //矩阵行数
	int m_nCols;				     //矩阵列数
	double *pMatrix;			     //矩阵元素的起始地址
public:
        //构造、析构函数
	TMatrix();
	virtual ~TMatrix();
	TMatrix(int nRows,int nCols,double MinValue,double MaxValue); //矩阵初始化为[nRows][nCols]阶的随机阵
	TMatrix(int nRows,int nCols,double Data=0.0);                 //矩阵初始化为[nRows][nCols]阶的Data阵
	TMatrix(double *p,int nRows,int nCols);                       //传入[nRows][nCols]阶数组的起始地址
	TMatrix(TMatrix& OneMatrix);		                      //拷贝构造函数
	
	//初始化函数 
	void InitAtRandom(int nRows,int nCols,double MinValue,double MaxValue);
	void InitByData(int nRows,int nCols,double Data=0.0);                
        void TMatrix::InitByData(double Data=0.0);
	void InitByArray(double *p,int nRows,int nCols);
	void InitByMatrix(TMatrix& OneMatrix);

        //操作函数
	int GetCols() const;			     //获得矩阵行数
	int GetRows() const;			     //获得矩阵列数
        double *GetAddr() const;                     //获取矩阵数据区的指针
	double GetValue(int i,int j) const;	     //获得矩阵中(i,j)的元素
	void SetValue(int i,int j,double value);     //设置矩阵中(i,j)的元素
	TMatrix GetRowVector(int i) const;           //获取矩阵中行向量
	TMatrix GetColVector(int i) const;           //获取矩阵中列向量
	void Release();                              //释放该矩阵占用的资源,实际上与析构函数相同
        
        //重载运算符
        void operator=(const TMatrix OneMatrix);      //重载=运算符
	TMatrix operator +(const TMatrix OneMatrix);  //重载+运算符:矩阵+矩阵
        void operator +=(const TMatrix OneMatrix);    //重载+=运算符
	TMatrix operator +(double Data);              //重载+运算符:矩阵+常数
	TMatrix operator -(const TMatrix OneMatrix);  //重载-运算符:矩阵-矩阵
	TMatrix operator *(const TMatrix OneMatrix);  //重载*运算符:矩阵*矩阵
	TMatrix operator *(double Data);              //重载*运算符:矩阵*常数
	TMatrix operator &&(TMatrix OneMatrix);       //重载&&运算符:两矩阵对应元素相乘
	friend TMatrix operator *(double Data,TMatrix OneMatrix);   //重载*运算符:常数*矩阵
        friend TMatrix operator -(const TMatrix OneMatrix);         //重载负号
        friend TMatrix operator +(double Data,TMatrix OneMatrix);   //重载+运算符:常数+矩阵
        
	//定义运算符及函数
	TMatrix Anti();                   //矩阵求逆
	TMatrix Transpose();              //求转置矩阵
	
	//如下函数均为方便神经网络的运算而提供
	TMatrix Linear(double LowLimit,double HighLimit);    //线性化
	TMatrix Linear(TMatrix& LineInfo);                   //线性化
        TMatrix DeLinear(TMatrix& LineInfo);                 //逆线性化
        friend TMatrix TanH(TMatrix& Input,TMatrix& u,TMatrix& o); //求取矩阵元素的TanH函数值
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -