tiny-matrix
轻量级矩阵类
 
载入中...
搜索中...
未找到
Matrix类 参考

本类用于进行矩阵的基本计算 更多...

#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 ()
 析构函数
 
Matrixoperator= (const Matrix &tmp)
 运算符重载,拷贝赋值函数
 
Matrixoperator= (Matrix &&tmp) noexcept
 运算符重载,移动赋值函数
 
Matrixoperator+= (const Matrix &tmp)
 运算符重载
 
Matrixoperator+= (const double &num)
 运算符重载
 
Matrixoperator-= (const Matrix &tmp)
 运算符重载
 
Matrixoperator-= (const double &num)
 运算符重载
 
Matrixoperator++ ()
 运算符重载
 
Matrix operator++ (int)
 运算符重载
 
Matrixoperator-- ()
 运算符重载
 
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
 公有函数
 
MatrixsetBlock (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)
 运算符重载,友元函数
 

详细描述

本类用于进行矩阵的基本计算

作者
Zerol Acqua<zerol.nosp@m.acqu.nosp@m.a@out.nosp@m.look.nosp@m..com>
注解
detailed description

构造及析构函数说明

◆ Matrix() [1/8]

Matrix::Matrix ( )
explicit

无参数构造函数

获取一个0*0的未分配内存的空矩阵, 不合法的计算一般返回本矩阵。

◆ Matrix() [2/8]

Matrix::Matrix ( double num)

构造函数

将double类型转化为1*1矩阵。

参数
[in]num数字

◆ Matrix() [3/8]

Matrix::Matrix ( const MatIniLst & lst)

构造函数

使用初始化列表构造矩阵。

参数
[in]lst初始化列表

◆ Matrix() [4/8]

Matrix::Matrix ( const std::initializer_list< MatIniLst > & lst)

构造函数

使用初始化列表构造矩阵,列数为最多的一行的元素个数,可以以0补足其它行的元素。

参数
[in]lst初始化列表(两层)

◆ Matrix() [5/8]

Matrix::Matrix ( const std::initializer_list< MatIniLst > & lst,
int col )
explicit

构造函数

使用初始化列表构造矩阵,根据设定的列数,可以以0补足初始化列表中没有的元素。

参数
[in]lst初始化列表(两层)
[in]col矩阵列数

◆ Matrix() [6/8]

Matrix::Matrix ( double * p,
int row,
int col,
int count )
explicit

构造函数

使用指针所指的数据构造矩阵,若数组长度小于需要的长度row*col,则会报错。

参数
[in]pdouble型指针,是要输入的数据
[in]row矩阵行数
[in]col矩阵列数
[in]count数组长度

◆ Matrix() [7/8]

Matrix::Matrix ( const Matrix & tmp)

拷贝构造函数

◆ Matrix() [8/8]

Matrix::Matrix ( Matrix && tmp)
noexcept

移动构造函数

◆ ~Matrix()

Matrix::~Matrix ( )

析构函数

成员函数说明

◆ add()

Matrix Matrix::add ( const Matrix & tmp) const

公有函数

计算矩阵与本矩阵的和,与“+”等价。

参数
[in]tmp加上的矩阵
返回
返回求和后的结果

◆ det()

bool Matrix::det ( double & result) const

公有函数

计算矩阵的行列式。

参数
[in]result返回行列式的值
返回
能求行列式返回true,否则返回false

◆ diag()

Matrix Matrix::diag ( Matrix mat)
static

静态函数

由行、列向量生成对角矩阵,或者从一个矩阵获取对角线元素。

参数
[in]mat
返回
返回对角矩阵,或由矩阵返回对角元素列向量

◆ eigen()

Matrix Matrix::eigen ( ) const

公有函数

求矩阵的特征值(从大到小排列)。

返回
返回特征值组成的列向量,从大到小排列。 迭代超限,存在复特征值等原因导致无法求解,则返回空矩阵

◆ eye() [1/2]

Matrix Matrix::eye ( int row)
static

静态函数

返回一个方阵,用于生成单位方阵。

参数
[in]row方阵的阶数
返回
返回单位方阵

◆ eye() [2/2]

Matrix Matrix::eye ( int row,
int col )
static

静态函数

返回一个矩阵,用于生成单位矩阵。

参数
[in]row矩阵的行数
[in]col矩阵的列数
返回
返回单位矩阵

◆ gauss()

Matrix Matrix::gauss ( ) const

公有函数

对矩阵进行高斯消元。

返回
返回高斯消元的结果

◆ getBlock()

Matrix Matrix::getBlock ( int startRowId,
int startColId,
int blockRow,
int blockCol ) const

公有函数

从矩阵得到一块矩阵。

参数
[in]startRowId分出的矩阵左上角元素在原矩阵中的行号(从0起算)
[in]startColId分出的矩阵左上角元素在原矩阵中的列号(从0起算)
[in]blockRow分出的矩阵的行数
[in]blockCol分出的矩阵的列数
返回
返回分出的矩阵, 若不能分出矩阵,返回空矩阵

◆ getCol()

int Matrix::getCol ( ) const

公有函数

返回
返回该矩阵的列数

◆ getRow()

int Matrix::getRow ( ) const

公有函数

返回
返回该矩阵的行数

◆ hessenberg()

Matrix Matrix::hessenberg ( Matrix & Q) const

公有函数

将该矩阵化为上Hessenberg矩阵(方阵)。

参数
[out]Q由本矩阵相似变换到上Hessenberg矩阵的对称正交阵。 H=Q^T*A*Q
返回
与该矩阵相似的上Hessenberg矩阵

◆ inverse()

Matrix Matrix::inverse ( ) const

公有函数

矩阵求逆。

返回
返回求逆的结果

◆ isEmptyMatrix()

bool Matrix::isEmptyMatrix ( ) const

公有函数

检测矩阵是否为空矩阵。

返回
若矩阵为空矩阵,返回true, 否则返回false

◆ isSizeValidity()

bool Matrix::isSizeValidity ( )

公有函数

检测矩阵形状的有效性。

返回
若矩阵的形状有效,返回true, 否则返回false,并将矩阵置为空矩阵

◆ isSquareMatrix()

bool Matrix::isSquareMatrix ( ) const

公有函数

检测矩阵是否为方阵。

返回
若矩阵为方阵,返回true, 否则返回false

◆ lrMerge()

Matrix Matrix::lrMerge ( Matrix & left,
Matrix & right )
static

静态函数

矩阵左右拼接。

参数
[in]left拼接在左边的矩阵
[in]right拼接在右边的矩阵
返回
返回拼接后的矩阵

◆ ones() [1/2]

Matrix Matrix::ones ( int row)
static

静态函数

返回一个方阵,用于生成元素全为1的方阵。

参数
[in]row方阵的阶数
返回
返回元素全为1的方阵

◆ ones() [2/2]

Matrix Matrix::ones ( int row,
int col )
static

静态函数

返回一个方阵,用于生成元素全为1的矩阵。

参数
[in]row矩阵的行数
[in]col矩阵的列数
返回
返回元素全为1的矩阵

◆ operator++() [1/2]

Matrix & Matrix::operator++ ( )

运算符重载

前置递增。

返回
递增后的矩阵引用

◆ operator++() [2/2]

Matrix Matrix::operator++ ( int )

运算符重载

后置递增。

参数
[in]useless区分前后置的参数,无实际意义
返回
递增前的矩阵

◆ operator+=() [1/2]

Matrix & Matrix::operator+= ( const double & num)

运算符重载

复合赋值+= 。

参数
[in]tmp要加上的矩阵
返回
返回结果该矩阵的引用

◆ operator+=() [2/2]

Matrix & Matrix::operator+= ( const Matrix & tmp)

运算符重载

复合赋值+=。

参数
[in]tmp要加上的矩阵
返回
返回结果矩阵的引用

◆ operator--() [1/2]

Matrix & Matrix::operator-- ( )

运算符重载

前置递减。

返回
递减后的矩阵引用

◆ operator--() [2/2]

Matrix Matrix::operator-- ( int )

运算符重载

后置递减。

参数
[in]useless区分前后置的参数,无实际意义
返回
递减前的矩阵

◆ operator-=() [1/2]

Matrix & Matrix::operator-= ( const double & num)

运算符重载

复合赋值+=。

参数
[in]tmp要减去的数字
返回
返回结果矩阵的引用

◆ operator-=() [2/2]

Matrix & Matrix::operator-= ( const Matrix & tmp)

运算符重载

复合赋值-=。

参数
[in]tmp要减去的矩阵
返回
返回结果矩阵的引用

◆ operator=() [1/2]

Matrix & Matrix::operator= ( const Matrix & tmp)

运算符重载,拷贝赋值函数

将矩阵赋值。

参数
[in]tmp作为值的矩阵
返回
返回赋值之后的矩阵的引用

◆ operator=() [2/2]

Matrix & Matrix::operator= ( Matrix && tmp)
noexcept

运算符重载,移动赋值函数

将矩阵赋值。

参数
[in]tmp作为值的矩阵
返回
返回赋值之后的该矩阵的引用

◆ operator[]() [1/2]

double * Matrix::operator[] ( int num)

运算符重载

取下标。 返回下标对应的矩阵的某一行, 一般连续使用两个[]以获取某个指针。 不要在类的方法中使用取下标运算符! 有两个版本,此为非常量版本。

参数
[in]num下标
返回
返回下标对应的矩阵的某一行的第一个元素的指针

◆ operator[]() [2/2]

const double * Matrix::operator[] ( int num) const

运算符重载

取下标。 返回下标对应的矩阵的某一行, 一般连续使用两个[]以获取某个指针。 不要在类的方法中使用取下标运算符! 有两个版本,此为常量版本。

参数
[in]num下标
返回
返回下标对应的矩阵的某一行的第一个元素的指针

◆ qrDecom()

void Matrix::qrDecom ( Matrix & Q,
Matrix & R ) const

公有函数

对该矩阵进行QR分解。

参数
[in]Q正交矩阵
[in]R广义上三角矩阵

◆ randMatrix() [1/2]

Matrix Matrix::randMatrix ( int n)
static

静态函数

生成元素随机的方阵。

参数
[in]n方阵阶数
返回
返回随机方阵

◆ randMatrix() [2/2]

Matrix Matrix::randMatrix ( int row,
int col )
static

静态函数

生成元素随机的方阵。

参数
[in]row矩阵行数
[in]col矩阵列数
返回
返回随机方阵

◆ rank()

int Matrix::rank ( ) const

公有函数

计算矩阵的秩。

返回
返回矩阵的秩

◆ rMultiple()

Matrix Matrix::rMultiple ( const Matrix & tmp) const

公有函数

计算某矩阵右乘本矩阵,与“*”等价。

参数
[in]tmp右乘的矩阵
返回
返回右乘后的结果

◆ rowAdd()

void Matrix::rowAdd ( int des,
int src,
double factor )

公有函数

行线性相加。

参数
[in]des要加到的目标行
[in]src作为被加的行
[in]factor所乘上的线性因数

◆ rowExchange()

bool Matrix::rowExchange ( int des,
int src )

公有函数

行交换。

参数
[in]des要交换的行
[in]src要交换的行
返回
(对行列式而言)若变号返回true, 否则返回false(交换的行相同)

◆ rowMultiply()

void Matrix::rowMultiply ( int des,
double factor )

公有函数

行数乘。

参数
[in]des要数乘的目标行
[in]factor所乘上的线性因数

◆ setBlock()

Matrix & Matrix::setBlock ( int startRowId,
int startColId,
const Matrix & block )

公有函数

将矩阵的某一块设置为给定的矩阵。

参数
[in]startRowId给定的矩阵左上角元素在原矩阵中的行号(从0起算)
[in]startColId给定的矩阵左上角元素在原矩阵中的列号(从0起算)
[in]block给定的矩阵
返回
返回本矩阵自身, 若不能设置,则不做修改,依然返回本矩阵自身

◆ setPrecise()

void Matrix::setPrecise ( int precise)
static

静态函数

设置矩阵显示的精度。

参数
[in]precise精度

◆ sMultiple()

Matrix Matrix::sMultiple ( const double & factor) const

公有函数

计算矩阵数乘,与“*”等价。

参数
[in]tmp所乘的数
返回
返回右乘后的结果

◆ sub()

Matrix Matrix::sub ( const Matrix & tmp) const

公有函数

计算本矩阵与矩阵的差,与“-”等价。

参数
[in]tmp减去的矩阵
返回
返回求差后的结果

◆ transpose()

Matrix Matrix::transpose ( ) const

公有函数

矩阵转置。

返回
返回转置的结果

◆ udMerge()

Matrix Matrix::udMerge ( Matrix & up,
Matrix & down )
static

静态函数

矩阵上下拼接。

参数
[in]up拼接在上边的矩阵
[in]down拼接在下边的矩阵
返回
返回拼接后的矩阵

◆ zeros() [1/2]

Matrix Matrix::zeros ( int row)
static

静态函数

返回一个方阵,用于生成元素全为0的方阵。

参数
[in]row方阵的阶数
返回
返回元素全为0的方阵

◆ zeros() [2/2]

Matrix Matrix::zeros ( int row,
int col )
static

静态函数

返回一个方阵,用于生成元素全为0的矩阵。

参数
[in]row矩阵的行数
[in]col矩阵的列数
返回
返回元素全为0的矩阵

友元及相关函数文档

◆ operator!=

bool operator!= ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

判不等。

参数
[in]lMat左矩阵
[in]rMat右矩阵
返回
返回判不等结果

◆ operator* [1/3]

Matrix operator* ( const double & lFactor,
const Matrix & rMat )
friend

运算符重载,友元函数

double*matrix,返回一个矩阵。

参数
[in]lFactor左乘的系数
[in]rMat矩阵
返回
返回矩阵数乘后的结果

◆ operator* [2/3]

Matrix operator* ( const Matrix & lMat,
const double & rFactor )
friend

运算符重载,友元函数

matrix*double,返回一个矩阵。

参数
[in]lMat矩阵
[in]rFactor右乘的系数
返回
返回矩阵数乘后的结果

◆ operator* [3/3]

Matrix operator* ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

将本矩阵与所给矩阵相乘求矩阵乘积。

参数
[in]lMat左乘矩阵
[in]rMat右乘矩阵
返回
返回求矩阵乘积之后的新矩阵

◆ operator+ [1/4]

Matrix operator+ ( const double & lNum,
const Matrix & rMat )
friend

运算符重载,友元函数

double+matrix,返回一个矩阵。

参数
[in]lNum左加的数字
[in]rMat右加的矩阵
返回
返回矩阵广播后的结果

◆ operator+ [2/4]

Matrix operator+ ( const Matrix & lMat,
const double & rNum )
friend

运算符重载,友元函数

matrix+double,返回一个矩阵。

参数
[in]lMat左加的矩阵
[in]rMat右加的数字
返回
返回矩阵广播后的结果

◆ operator+ [3/4]

Matrix operator+ ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

将本矩阵与所给矩阵相加求和。

参数
[in]lMat左加矩阵
[in]rMat右加矩阵
返回
返回求和之后的该矩阵的引用

◆ operator+ [4/4]

Matrix operator+ ( const Matrix & Mat)
friend

运算符重载,友元函数

不变号。

参数
[in]Mat矩阵
返回
返回不变号的结果

◆ operator- [1/4]

Matrix operator- ( const double & lNum,
const Matrix & rMat )
friend

运算符重载,友元函数

double-matrix,返回一个矩阵。

参数
[in]lNum被减的数字
[in]rMat减的矩阵
返回
返回矩阵广播后的结果

◆ operator- [2/4]

Matrix operator- ( const Matrix & lMat,
const double & rNum )
friend

运算符重载,友元函数

matrix-double,返回一个矩阵。

参数
[in]lMat被减的矩阵
[in]rMat减的数字
返回
返回矩阵广播后的结果

◆ operator- [3/4]

Matrix operator- ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

将本矩阵与所给矩阵相减求差。

参数
[in]lMat左被减矩阵
[in]rMat右减矩阵
返回
返回求差之后的矩阵

◆ operator- [4/4]

Matrix operator- ( const Matrix & Mat)
friend

运算符重载,友元函数

取相反。

参数
[in]Mat矩阵
返回
返回取反结果

◆ operator/ [1/3]

Matrix operator/ ( const double & lFactor,
const Matrix & rMat )
friend

运算符重载,友元函数

double/matrix,返回一个矩阵。

参数
[in]lFactor被除的系数
[in]rMat右除矩阵
返回
返回矩阵相除后的结果

◆ operator/ [2/3]

Matrix operator/ ( const Matrix & lMat,
const double & rFactor )
friend

运算符重载,友元函数

matrix/double,返回一个矩阵。

参数
[in]lMat被除的矩阵
[in]rFactor右除系数
返回
返回矩阵相除后的结果

◆ operator/ [3/3]

Matrix operator/ ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

将本矩阵与所给矩阵相除求矩阵乘积。

参数
[in]lMat被除矩阵
[in]rMat右除矩阵
返回
返回求矩阵相除之后的矩阵

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const Matrix & tmp )
friend

运算符重载,友元函数

用于实现cout<< xxx << xxx, 返回ostream的引用。

参数
[in,out]osostream
[in]tmp矩阵
返回
返回os的引用即ostream&

◆ operator==

bool operator== ( const Matrix & lMat,
const Matrix & rMat )
friend

运算符重载,友元函数

判等。

参数
[in]lMat左矩阵
[in]rMat右矩阵
返回
返回判等结果