📄 cmatrix.h
字号:
// 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 + -