本类用于进行矩阵的基本计算 更多...
#include <Matrix.h>
Public 成员函数 | |
Matrix () | |
无参数构造函数 | |
Matrix (double num) | |
构造函数 | |
Matrix (const MatIniLst &lst) | |
构造函数 | |
Matrix (const std::initializer_list< MatIniLst > &lst) | |
构造函数 | |
Matrix (const std::initializer_list< MatIniLst > &lst, int col) | |
构造函数 | |
Matrix (double *p, int row, int col, int count) | |
构造函数 | |
Matrix (const Matrix &tmp) | |
拷贝构造函数 | |
Matrix (Matrix &&tmp) noexcept | |
移动构造函数 | |
~Matrix () | |
析构函数 | |
Matrix & | operator= (const Matrix &tmp) |
运算符重载,拷贝赋值函数 | |
Matrix & | operator= (Matrix &&tmp) noexcept |
运算符重载,移动赋值函数 | |
Matrix & | operator+= (const Matrix &tmp) |
运算符重载 | |
Matrix & | operator+= (const double &num) |
运算符重载 | |
Matrix & | operator-= (const Matrix &tmp) |
运算符重载 | |
Matrix & | operator-= (const double &num) |
运算符重载 | |
Matrix & | operator++ () |
运算符重载 | |
Matrix | operator++ (int) |
运算符重载 | |
Matrix & | operator-- () |
运算符重载 | |
Matrix | operator-- (int) |
运算符重载 | |
double * | operator[] (int num) |
运算符重载 | |
const double * | operator[] (int num) const |
运算符重载 | |
int | getRow () const |
公有函数 | |
int | getCol () const |
公有函数 | |
Matrix | add (const Matrix &tmp) const |
公有函数 | |
Matrix | sub (const Matrix &tmp) const |
公有函数 | |
Matrix | rMultiple (const Matrix &tmp) const |
公有函数 | |
Matrix | sMultiple (const double &factor) const |
公有函数 | |
Matrix | transpose () const |
公有函数 | |
bool | det (double &result) const |
公有函数 | |
Matrix | gauss () const |
公有函数 | |
Matrix | inverse () const |
公有函数 | |
int | rank () const |
公有函数 | |
bool | isSizeValidity () |
公有函数 | |
bool | isSquareMatrix () const |
公有函数 | |
bool | isEmptyMatrix () const |
公有函数 | |
void | rowAdd (int des, int src, double factor) |
公有函数 | |
bool | rowExchange (int des, int src) |
公有函数 | |
void | rowMultiply (int des, double factor) |
公有函数 | |
Matrix | getBlock (int startRowId, int startColId, int blockRow, int blockCol) const |
公有函数 | |
Matrix & | setBlock (int startRowId, int startColId, const Matrix &block) |
公有函数 | |
Matrix | hessenberg (Matrix &Q) const |
公有函数 | |
void | qrDecom (Matrix &Q, Matrix &R) const |
公有函数 | |
Matrix | eigen () const |
公有函数 | |
静态 Public 成员函数 | |
static Matrix | eye (int row) |
静态函数 | |
static Matrix | eye (int row, int col) |
静态函数 | |
static Matrix | ones (int row) |
静态函数 | |
static Matrix | ones (int row, int col) |
静态函数 | |
static Matrix | zeros (int row) |
静态函数 | |
static Matrix | zeros (int row, int col) |
静态函数 | |
static Matrix | diag (Matrix mat) |
静态函数 | |
static Matrix | randMatrix (int n) |
静态函数 | |
static Matrix | randMatrix (int row, int col) |
静态函数 | |
static void | setPrecise (int precise) |
静态函数 | |
static Matrix | lrMerge (Matrix &left, Matrix &right) |
静态函数 | |
static Matrix | udMerge (Matrix &up, Matrix &down) |
静态函数 | |
友元 | |
Matrix | operator+ (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator- (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator* (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator* (const double &lFactor, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator* (const Matrix &lMat, const double &rFactor) |
运算符重载,友元函数 | |
Matrix | operator/ (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator/ (const double &lFactor, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator/ (const Matrix &lMat, const double &rFactor) |
运算符重载,友元函数 | |
Matrix | operator+ (const Matrix &lMat, const double &rNum) |
运算符重载,友元函数 | |
Matrix | operator+ (const double &lNum, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator- (const Matrix &lMat, const double &rNum) |
运算符重载,友元函数 | |
Matrix | operator- (const double &lNum, const Matrix &rMat) |
运算符重载,友元函数 | |
bool | operator== (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
bool | operator!= (const Matrix &lMat, const Matrix &rMat) |
运算符重载,友元函数 | |
Matrix | operator- (const Matrix &Mat) |
运算符重载,友元函数 | |
Matrix | operator+ (const Matrix &Mat) |
运算符重载,友元函数 | |
std::ostream & | operator<< (std::ostream &os, const Matrix &tmp) |
运算符重载,友元函数 | |
本类用于进行矩阵的基本计算
|
explicit |
无参数构造函数
获取一个0*0的未分配内存的空矩阵, 不合法的计算一般返回本矩阵。
Matrix::Matrix | ( | double | num | ) |
构造函数
将double类型转化为1*1矩阵。
[in] | num | 数字 |
Matrix::Matrix | ( | const MatIniLst & | lst | ) |
构造函数
使用初始化列表构造矩阵。
[in] | lst | 初始化列表 |
Matrix::Matrix | ( | const std::initializer_list< MatIniLst > & | lst | ) |
构造函数
使用初始化列表构造矩阵,列数为最多的一行的元素个数,可以以0补足其它行的元素。
[in] | lst | 初始化列表(两层) |
|
explicit |
构造函数
使用初始化列表构造矩阵,根据设定的列数,可以以0补足初始化列表中没有的元素。
[in] | lst | 初始化列表(两层) |
[in] | col | 矩阵列数 |
|
explicit |
构造函数
使用指针所指的数据构造矩阵,若数组长度小于需要的长度row*col,则会报错。
[in] | p | double型指针,是要输入的数据 |
[in] | row | 矩阵行数 |
[in] | col | 矩阵列数 |
[in] | count | 数组长度 |
Matrix::Matrix | ( | const Matrix & | tmp | ) |
拷贝构造函数
|
noexcept |
移动构造函数
Matrix::~Matrix | ( | ) |
析构函数
bool Matrix::det | ( | double & | result | ) | const |
公有函数
计算矩阵的行列式。
[in] | result | 返回行列式的值 |
静态函数
由行、列向量生成对角矩阵,或者从一个矩阵获取对角线元素。
[in] | mat |
Matrix Matrix::eigen | ( | ) | const |
公有函数
求矩阵的特征值(从大到小排列)。
|
static |
静态函数
返回一个方阵,用于生成单位方阵。
[in] | row | 方阵的阶数 |
|
static |
静态函数
返回一个矩阵,用于生成单位矩阵。
[in] | row | 矩阵的行数 |
[in] | col | 矩阵的列数 |
Matrix Matrix::gauss | ( | ) | const |
公有函数
对矩阵进行高斯消元。
Matrix Matrix::getBlock | ( | int | startRowId, |
int | startColId, | ||
int | blockRow, | ||
int | blockCol ) const |
公有函数
从矩阵得到一块矩阵。
[in] | startRowId | 分出的矩阵左上角元素在原矩阵中的行号(从0起算) |
[in] | startColId | 分出的矩阵左上角元素在原矩阵中的列号(从0起算) |
[in] | blockRow | 分出的矩阵的行数 |
[in] | blockCol | 分出的矩阵的列数 |
int Matrix::getCol | ( | ) | const |
公有函数
int Matrix::getRow | ( | ) | const |
公有函数
公有函数
将该矩阵化为上Hessenberg矩阵(方阵)。
[out] | Q | 由本矩阵相似变换到上Hessenberg矩阵的对称正交阵。 H=Q^T*A*Q |
Matrix Matrix::inverse | ( | ) | const |
公有函数
矩阵求逆。
bool Matrix::isEmptyMatrix | ( | ) | const |
公有函数
检测矩阵是否为空矩阵。
bool Matrix::isSizeValidity | ( | ) |
公有函数
检测矩阵形状的有效性。
bool Matrix::isSquareMatrix | ( | ) | const |
公有函数
检测矩阵是否为方阵。
静态函数
矩阵左右拼接。
[in] | left | 拼接在左边的矩阵 |
[in] | right | 拼接在右边的矩阵 |
|
static |
静态函数
返回一个方阵,用于生成元素全为1的方阵。
[in] | row | 方阵的阶数 |
|
static |
静态函数
返回一个方阵,用于生成元素全为1的矩阵。
[in] | row | 矩阵的行数 |
[in] | col | 矩阵的列数 |
Matrix & Matrix::operator++ | ( | ) |
运算符重载
前置递增。
Matrix Matrix::operator++ | ( | int | ) |
运算符重载
后置递增。
[in] | useless | 区分前后置的参数,无实际意义 |
Matrix & Matrix::operator+= | ( | const double & | num | ) |
运算符重载
复合赋值+= 。
[in] | tmp | 要加上的矩阵 |
Matrix & Matrix::operator-- | ( | ) |
运算符重载
前置递减。
Matrix Matrix::operator-- | ( | int | ) |
运算符重载
后置递减。
[in] | useless | 区分前后置的参数,无实际意义 |
Matrix & Matrix::operator-= | ( | const double & | num | ) |
运算符重载
复合赋值+=。
[in] | tmp | 要减去的数字 |
运算符重载,拷贝赋值函数
将矩阵赋值。
[in] | tmp | 作为值的矩阵 |
运算符重载,移动赋值函数
将矩阵赋值。
[in] | tmp | 作为值的矩阵 |
double * Matrix::operator[] | ( | int | num | ) |
运算符重载
取下标。 返回下标对应的矩阵的某一行, 一般连续使用两个[]以获取某个指针。 不要在类的方法中使用取下标运算符! 有两个版本,此为非常量版本。
[in] | num | 下标 |
const double * Matrix::operator[] | ( | int | num | ) | const |
运算符重载
取下标。 返回下标对应的矩阵的某一行, 一般连续使用两个[]以获取某个指针。 不要在类的方法中使用取下标运算符! 有两个版本,此为常量版本。
[in] | num | 下标 |
|
static |
静态函数
生成元素随机的方阵。
[in] | n | 方阵阶数 |
|
static |
静态函数
生成元素随机的方阵。
[in] | row | 矩阵行数 |
[in] | col | 矩阵列数 |
int Matrix::rank | ( | ) | const |
公有函数
计算矩阵的秩。
公有函数
计算某矩阵右乘本矩阵,与“*”等价。
[in] | tmp | 右乘的矩阵 |
void Matrix::rowAdd | ( | int | des, |
int | src, | ||
double | factor ) |
公有函数
行线性相加。
[in] | des | 要加到的目标行 |
[in] | src | 作为被加的行 |
[in] | factor | 所乘上的线性因数 |
bool Matrix::rowExchange | ( | int | des, |
int | src ) |
公有函数
行交换。
[in] | des | 要交换的行 |
[in] | src | 要交换的行 |
void Matrix::rowMultiply | ( | int | des, |
double | factor ) |
公有函数
行数乘。
[in] | des | 要数乘的目标行 |
[in] | factor | 所乘上的线性因数 |
公有函数
将矩阵的某一块设置为给定的矩阵。
[in] | startRowId | 给定的矩阵左上角元素在原矩阵中的行号(从0起算) |
[in] | startColId | 给定的矩阵左上角元素在原矩阵中的列号(从0起算) |
[in] | block | 给定的矩阵 |
|
static |
静态函数
设置矩阵显示的精度。
[in] | precise | 精度 |
Matrix Matrix::sMultiple | ( | const double & | factor | ) | const |
公有函数
计算矩阵数乘,与“*”等价。
[in] | tmp | 所乘的数 |
Matrix Matrix::transpose | ( | ) | const |
公有函数
矩阵转置。
静态函数
矩阵上下拼接。
[in] | up | 拼接在上边的矩阵 |
[in] | down | 拼接在下边的矩阵 |
|
static |
静态函数
返回一个方阵,用于生成元素全为0的方阵。
[in] | row | 方阵的阶数 |
|
static |
静态函数
返回一个方阵,用于生成元素全为0的矩阵。
[in] | row | 矩阵的行数 |
[in] | col | 矩阵的列数 |
运算符重载,友元函数
判不等。
[in] | lMat | 左矩阵 |
[in] | rMat | 右矩阵 |
运算符重载,友元函数
double*matrix,返回一个矩阵。
[in] | lFactor | 左乘的系数 |
[in] | rMat | 矩阵 |
运算符重载,友元函数
matrix*double,返回一个矩阵。
[in] | lMat | 矩阵 |
[in] | rFactor | 右乘的系数 |
运算符重载,友元函数
将本矩阵与所给矩阵相乘求矩阵乘积。
[in] | lMat | 左乘矩阵 |
[in] | rMat | 右乘矩阵 |
运算符重载,友元函数
double+matrix,返回一个矩阵。
[in] | lNum | 左加的数字 |
[in] | rMat | 右加的矩阵 |
运算符重载,友元函数
matrix+double,返回一个矩阵。
[in] | lMat | 左加的矩阵 |
[in] | rMat | 右加的数字 |
运算符重载,友元函数
将本矩阵与所给矩阵相加求和。
[in] | lMat | 左加矩阵 |
[in] | rMat | 右加矩阵 |
运算符重载,友元函数
double-matrix,返回一个矩阵。
[in] | lNum | 被减的数字 |
[in] | rMat | 减的矩阵 |
运算符重载,友元函数
matrix-double,返回一个矩阵。
[in] | lMat | 被减的矩阵 |
[in] | rMat | 减的数字 |
运算符重载,友元函数
将本矩阵与所给矩阵相减求差。
[in] | lMat | 左被减矩阵 |
[in] | rMat | 右减矩阵 |
运算符重载,友元函数
double/matrix,返回一个矩阵。
[in] | lFactor | 被除的系数 |
[in] | rMat | 右除矩阵 |
运算符重载,友元函数
matrix/double,返回一个矩阵。
[in] | lMat | 被除的矩阵 |
[in] | rFactor | 右除系数 |
运算符重载,友元函数
将本矩阵与所给矩阵相除求矩阵乘积。
[in] | lMat | 被除矩阵 |
[in] | rMat | 右除矩阵 |
|
friend |
运算符重载,友元函数
用于实现cout<< xxx << xxx, 返回ostream的引用。
[in,out] | os | ostream |
[in] | tmp | 矩阵 |