?? matrix.h
字號:
// Matrix.h: interface for the CMatrix class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MATRIX_H__FF0DD7B1_E190_48F1_A1B2_5D5E7D69CA46__INCLUDED_)
#define AFX_MATRIX_H__FF0DD7B1_E190_48F1_A1B2_5D5E7D69CA46__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
typedef unsigned char uint1; //標識用u1,數值運算
typedef unsigned short uint2; //標識用u2,數值運算
typedef unsigned long uint4; //標識用u4,數值運算
typedef char int1; //標識用i1,數值運算
typedef short int2; //標識用i2,數值運算
typedef int int4; //標識用i4,數值運算
typedef float f4; //標識用f4,數值運算
typedef double f8; //標識用f8,數值運算
//typedef char BOOL //標識用b, 邏輯運算(由于WINDOWS操作系統在afx.h中有此定義,所以此處不需)
/*
固定長度字符串用int1[],標識用str
不定長度字符串:WINDOWS環境中使用CString,其他環境中使用int1*,標識均為str
*/
///////////////////////////////////////////
//標準常量
#undef FALSE
#define FALSE 0
#undef TRUE
#define TRUE 1
#undef NULL
#define NULL 0
///////////////////////////////////////////
//數學常量及變換
#define PI (3.141592653589793)
#define DEG2SEMI (1.0/180.0) //degees to semisircles
#define SEMI2RAD (PI) //semisircles to radians
#define DEG2RAD (PI/180.0) //degrees to radians
#define SEC2RAD (PI/180.0/3600.0) //seconds to radians
#define RAD2DEG (180.0/PI) //radians to degrees
#define RAD2SEC (3600.0*180.0/PI) //radians to seconds
#define EPSILON (1e-10) //minimax float value can be ignored
class CMatrix
{
public:
CMatrix();
//復制構造
CMatrix(const CMatrix& OriginalMatrix);
//構造元素為零的矩陣
CMatrix(int4 i4RowNumber, int4 i4ColumnNumber);
//構造輸入元素的矩陣
CMatrix(const f8* pData, int4 i4RowNumber, int4 i4ColumnNumber);
virtual ~CMatrix();
//operation
public:
//功能:初始化矩陣
//參數:pData:原始數據首地址
// i4RowNumber:矩陣行數
// i4ColumnNumber:矩陣列數
//返回:成功返回1,失敗返回0,參數錯誤返回-100
int4 InitMatrix(const f8* pData,int4 i4RowNumber, int4 i4ColumnNumber);
//功能:初始化空矩陣,開辟存儲空間
//返回:成功返回1,失敗返回0,參數錯誤返回-100
int4 InitEmptyMatrix(int4 i4RowNumber, int4 i4ColumnNumber);
//功能:初始化零矩陣
//返回:成功返回1,失敗返回0,參數錯誤返回-100
int4 InitZeroMatrix(int4 i4RowNumber,int4 i4ColumnNumber);
//功能:得到原有矩陣的逆矩陣,原矩陣不變,效率高
//參數:maInverse :結果矩陣
//返回:成功 1 失敗 0
int4 GetInverseMatrix(CMatrix& maInverse)const;
//功能:得到原有矩陣的逆矩陣,原矩陣不變
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
CMatrix GetInverseMatrix()const;
//功能:原有矩陣求逆
//返回:成功 1 失敗 0
int4 Inverse();
//功能:得到原有矩陣的轉置矩陣,原矩陣不變
//參數:maTransposed :結果矩陣
//返回:成功 1 失敗 0
int4 GetTransposedMatrix(CMatrix& maTransposed)const;
//功能:得到原有矩陣的轉置矩陣,原矩陣不變
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
CMatrix GetTransposedMatrix()const;
//功能:原有矩陣轉置
//返回:成功 1 失敗 0
int4 Transpose();
//功能:得到原有矩陣的四舍五入整數矩陣,原矩陣不變
//返回:成功 1 失敗 0
int4 GetRoundMatrix(CMatrix& maTransposed)const;
//功能:得到原有矩陣的四舍五入整數矩陣,原矩陣不變
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
CMatrix GetRoundMatrix()const;
//功能:原有矩陣四舍五入,變成整數矩陣
//返回:成功 1 失敗 0
int4 Round();
//功能:得到原有矩陣的左上角子矩陣,原矩陣不變
//參數:
// nSubRowNumber: 新矩陣的行數
// nSubColumnNumber: 新矩陣的列數
// maSubMatrix: 結果矩陣
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
int4 GetLeftTopSubMatrix(int4 i4SubRowNumber, int4 i4SubColumnNumber, CMatrix& maSubMatrix)const;
//功能:得到原有矩陣的左上角子矩陣,原矩陣不變
//參數:
// nSubRowNumber: 新矩陣的行數
// nSubColumnNumber: 新矩陣的列數
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
CMatrix GetLeftTopSubMatrix(int4 i4SubRowNumber,int4 i4SubColumnNumber)const;
//功能:得到原有矩陣的任意位置子陣,原矩陣不變
//參數:
// nBeginRowNo: 子陣在原有矩陣中的起始行號,從0起算
// nSubRowNumber: 新矩陣的行數
// nBeginColumnNo: 子陣在原有矩陣中的起始列號,從0起算
// nSubColumnNumber: 新矩陣的列數
// maSubMatrix 結果矩陣
//返回:1 成功;0 失敗
int4 GetSubMatrix(int4 i4BeginRowNo, int4 i4SubRowNumber, int4 i4BeginColumnNo, int4 i4SubColumnNumber, CMatrix& maSubMatrix)const;
//功能:得到原有矩陣的任意位置子陣,原矩陣不變
//參數:
// nBeginRowNo: 子陣在原有矩陣中的起始行號,從0起算
// nSubRowNumber: 新矩陣的行數
// nBeginColumnNo: 子陣在原有矩陣中的起始列號,從0起算
// nSubColumnNumber: 新矩陣的列數
//返回:成功返回一個有效CMatrix對象,失敗返回空矩陣
CMatrix GetSubMatrix(int4 i4BeginRowNo, int4 i4SubRowNumber, int4 i4BeginColumnNo, int4 i4SubColumnNumber)const;
//功能:矩陣相加運算
//參數:maRight 被加數
// maResult 相加后的結果矩陣
//返回:1 成功;0 失敗
//使用示例:A.AddMatrix(B,C) 意為: C中的元素為A、B中元素之和
int4 AddMatrix(CMatrix& maRight, CMatrix& maResult)const;
//功能:矩陣相減運算
//參數:maRight 被減數
// maResult 相減后的結果矩陣
//返回:1 成功;0 失敗
//使用示例:A.SubMatrix(B,C) 意為: C中的元素為A、B中元素之差
int4 SubMatrix(CMatrix& maRight, CMatrix& maResult)const;
//功能:矩陣相乘運算
//參數:maRight 被乘數
// maResult 相乘后的結果矩陣
//返回:1 成功;0 失敗
//使用示例:A.MultiplyMatrix(B,C) 意為: C中的元素為A、B中元素之積
int4 MultiplyMatrix(CMatrix& maRight, CMatrix& maResult)const;
//功能:更改矩陣中的某子塊矩陣元素, 基于ChangeMember函數
//參數:
// i4BeginRowNo 元素所在矩陣中的行數,從0起算
// i4BeginColumnNo 元素所在矩陣中的列數,從0起算
// maSecMatrix 元素改為的值
//返回:1 成功;0 失敗
int4 ChangeSubMatrix(int4 i4BeginRowNo, int4 i4BeginColumnNo, const CMatrix& maSecMatrix);
//增加矩陣中的某子塊矩陣元素
//參數:
// i4BeginRowNo 元素所在矩陣中的行數,從0起算
// i4BeginColumnNo 元素所在矩陣中的列數,從0起算
// maSecMatrix 元素改為的值
//返回:1 成功;0 失敗
int4 AddSubMatrixMember(int4 i4BeginRowNo, int4 i4BeginColumnNo, const CMatrix& maSecMatrix);
//功能:以某一個數值,更改矩陣中的某行元素
//參數:
// i4RowNo 要修改的行數,從0起算
// f8Member 行元素改為的值
//返回:1 成功;0 失敗
int4 ChangeOneRowWithMember(int4 i4RowNo, f8 f8Member);
//功能:以某一個數值,更改矩陣中的某列元素
//參數:
// i4ColumnNo 要修改的列數,從0起算
// f8Member 列元素改為的值
//返回:1 成功;0 失敗
int4 ChangeOneColumnWithMember(int4 i4ColumnNo, f8 f8Member);
//功能:獲取矩陣中的某個元素
//參數:
// i4RowNo 元素所在矩陣中的行數,從0起算
// i4ColumnNo 元素所在矩陣中的列數,從0起算
// f8Member : 有效的f8地址
//返回:1 成功;0 失敗
int4 GetMember(int4 i4RowNo, int4 i4ColumnNo, f8& f8Member)const;
//功能:更改矩陣中的某個元素
//參數:
// i4RowNo 元素所在矩陣中的行數,從0起算
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -