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

📄 cmatrix.h

📁 相对定向的坐标解算
💻 H
📖 第 1 页 / 共 2 页
字号:
	//		i4ColumnNo	元素所在矩阵中的列数,从0起算
	//		f8Member :  元素改为的值
	//返回:1 成功;0 失败
	int4	ChangeMember(int4 i4RowNo, int4 i4ColumnNo, f8 f8Member)const;

	//功能:交换矩阵中指定的两行
	//参数:
	//		i4RowNo1	i4RowNo2	将要被交换的行号,从0起算
	//返回:1 成功;0 失败
	int4	ExChangeTwoRows(int4 i4RowNo1, int4 i4RowNo2)const;

	//功能:交换矩阵中指定的两列
	//参数:
	//		i4ColumnNo1 i4ColumnNo2	将要被交换的列号,从0起算
	//返回:1 成功;0 失败
	int4	ExChangeTwoColumns(int4 i4ColumnNo1, int4 i4ColumnNo2)const;

	//功能:在原有矩阵中追加一行
	//参数:pData:		欲追加数据的首地址
	//		nDataNumber:数据长度,原矩阵的列数
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	AppendNewRow(f8* pData, int4 i4DataNumber);

	//功能:在原有矩阵中追加一列
	//参数:pData:		欲追加数据的首地址
	//		nDataNumber:数据长度,原矩阵的行数
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	AppendNewColumn(f8* pData, int4 i4DataNumber);

	//功能:在原有矩阵中以行的形式追加矩阵,以追加行的形式实现
	//参数:SecMatrix 	欲追加数据的矩阵
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	AppendMatrixInRow(const CMatrix& SecMatrix);

	//功能:在原有矩阵中以列的形式追加矩阵,在追加行中实现
	//参数:SecMatrix 	欲追加数据的矩阵
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	AppendMatrixInColumn(const CMatrix& SecMatrix);
	
	//功能:在原有矩阵中以矩阵形式追加对角矩阵,非对角子阵补零
	//参数:SecMatrix 	欲追加数据的矩阵
	//返回:成功返回1,失败返回0,参数错误返回-100	
	//		| A 0|
	//	A =	| 0 B|
	int4	AppendMatrixInDiagonal(const CMatrix& SecMatrix); 

	//功能:在原有矩阵中以行形式插入矩阵
	//参数:i4RowNo		元素所在矩阵中的行数,从0起算
	//		SecMatrix 	欲追加数据的矩阵
	//返回:成功返回1,失败返回0,参数错误返回-100	
	int4	InsertMatrixInRow(int4 i4RowNo, const CMatrix& SecMatrix); 
	

	//功能:在原有矩阵中以行形式插入矩阵
	//参数:i4ColumnNo	元素所在矩阵中的列数,从0起算
	//		SecMatrix 	欲追加数据的矩阵
	//返回:成功返回1,失败返回0,参数错误返回-100	
	int4	InsertMatrixInColomn(int4 i4ColumnNo, const CMatrix& SecMatrix); 

	//功能:在指定行后面添加一行,所添加行的元素全为f8Member
	//参数:i4RowNo		指定行号,从0起算
	//		f8Member 	元素
	//返回:成功返回1,失败返回0
	int4	InsertOneRowWithMember(int4 i4RowNo, f8 f8Member); 
	
	//功能:在指定行后面添加一列,所添加列的元素全为f8Member
	//参数:i4ColumnNo		指定列号,从0起算
	//		f8Member 	元素
	//返回:成功返回1,失败返回0	
	int4	InsertOneColomnWithMember(int4 i4ColumnNo, f8 f8Member); 
	
	//功能:获取原矩阵中的一行
	//参数:nRowNo:	欲取数据在矩阵中的行号,从0起算
	//		pData:		返回数据的首地址,必须已经实化,并有足够的空间
	//返回:成功返回1,失败返回0,参数错误返回-100
	//注意:pData必须为有效地址,且空间长度必须大于等于矩阵的列数
	int4	GetOneRow(int4 i4RowNo, f8* pData)const;

	//功能:获取原矩阵中的一行
	//参数:nRowNo:		欲取数据在矩阵中的行号,从0起算
	//		maRowMAtrix:	行矩阵结果
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	GetOneRow(int4 i4RowNo, CMatrix& maRowMAtrix)const;
	
	//功能:获取原矩阵中的一列
	//参数:nColumnNo:	欲取数据在矩阵中的列号,从0起算
	//		pData:		返回数据的首地址,必须已经实化,并有足够的空间
	//返回:成功返回1,失败返回0,参数错误返回-100
	//注意:pData必须为有效地址,且空间长度必须大于等于矩阵的行数
	int4	GetOneColumn(int4 i4ColumnNo, f8* pData)const;

	//功能:获取原矩阵中的一列
	//参数:
	//		nColumnNo:	欲取数据在矩阵中的列号,从0起算
	//		maColumnMAtrix:	列矩阵结果
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	GetOneColumn(int4 i4ColumnNo, CMatrix& maColumnMAtrix)const;

	//功能:在原有矩阵中删除一行
	//参数:nRowNo:欲删除行的行号,从0起算
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	DeleteOneRow(int4 i4RowNo);

	//功能:在原有矩阵中删除一行
	//参数:nRowNo:欲删除行的行号,从0起算
	//		maRowMAtrix:	行矩阵结果
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	DeleteOneRow(int4 i4RowNo, CMatrix& maRowMAtrix);
	
	//功能:在原有矩阵中删除一列
	//参数:nColumnNo:	欲删除列的列号,从0起算
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	DeleteOneColumn(int4 i4ColumnNo);

	//功能:在原有矩阵中删除一列
	//参数:nColumnNo:		欲删除列的列号,从0起算
	//		maColumnMatrix:	列矩阵结果
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	DeleteOneColumn(int4 i4ColumnNo, CMatrix& maColumnMatrix);
	
	//功能:将其他行的数据合并到目标行
	//参数:nRowNo:欲合并的行号,从0起算
	//		nComMode:合并模式:1:相加;-1:相减,其他行减目标行
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	CombineRow(int4 i4RowNo, int4 i4ComMode);

	//功能:将前面行的数据合并到目标列
	//参数:nColumnNo :欲合并的列号,从0起算
	//		nComMode:合并模式:1:相加;-1:相减
	//返回:成功返回1,失败返回0,参数错误返回-100
	int4	CombineColumn(int4 i4ColumnNo, int4 i4ComMode);
	
	//功能:将矩阵清零,并不是将矩阵元素设零
	//返回:成功返回1
	int4	Dump();

	//功能:将矩阵元素设零
	//返回:成功返回1
	int4	SetZero();

	//功能:将矩阵元素设负
	//返回:成功返回1
	int4	SetMinus();

	//功能:将矩阵元素乘以倍数
	//参数:f8MulNum	倍数
	//返回:成功返回1
	int4	Multiply(f8 f8MulNum);

	//功能:将矩阵设成单位阵
	//参数:nRowNumber	单位阵的维数
	//返回:成功返回1
	int4	SetIdentity(int4 i4RowNumber);

	//功能:将矩阵设成简单相关阵
	//参数:nRowNumber	相关阵的维数
	//返回:成功返回1
	int4	SetCorrelativity(int4 i4RowNumber);

	int4 operator= (const CMatrix& SecMatrix);
	CMatrix	operator+ (const CMatrix& SecMatrix)const;
	CMatrix operator- (const CMatrix& SecMatrix)const;
	CMatrix operator- ();
	CMatrix operator* (const CMatrix& SecMatrix)const;
	CMatrix operator* (const f8 f8MultiNum) const;
	CMatrix operator/ (const f8 f8DevideNum) const;
	CMatrix operator/ (const CMatrix& SecMatrix)const;// A/B:表示A乘以B的逆阵
	CMatrix operator% (const CMatrix& SecMatrix)const;// A%B:表示A的逆阵乘以B
	
	int4 operator+= (const CMatrix& SecMatrix);
	int4 operator-= (const CMatrix& SecMatrix);
	BOOL operator== (const CMatrix& SecMatrix)const;
	BOOL operator!= (const CMatrix& SecMatrix)const;

//Attribute interface
public:
	int4	GetData(f8 * pDestiData)const;
	f8*     GetDataAddress()const;
	int4	GetRowNumber()const {return m_i4RowNumber;};
	int4	GetColumnNumber()const {return m_i4ColumnNumber;};
	f8	    GetTrace()const;
	f8	    GetNorm()const;

//protected operation
private:
	void	Initate();
	void	Transpose(const f8* pm1, f8* pm2, int4 i4m, int4 i4n)const;
	void	Mult(const f8* pm1, const f8* pm2, f8* pResult, int4 i_1, int4 j_12, int4 j_2)const;
	int4	InversMatrix(f8* pm1, int4 i4n)const;
	//功能:四舍五入,计算最靠近的整数
	//例如:1.2 -> 1; 1.8 -> 2; -33.3 -> -33; -6.9 -> -7 
	//参数:f8 dNum:要处理的实数
	//返回:返回的整数
	int4	round(f8 dNum)const;

//Attribute
protected:
	f8*   m_pData;
	int4  m_i4RowNumber, m_i4ColumnNumber;
	
private://取消的操作
};


#endif // !defined(__MATRIX_H__)

⌨️ 快捷键说明

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