NANA
Public 类型 | Public 成员函数 | 静态 Public 成员函数 | Protected 属性 | 友元 | 所有成员列表
NANA::Matrix类 参考

简单矩阵类 更多...

#include <matrix.h>

Public 类型

enum  DecompositionMethod { GaussiaJordan }
 枚举矩阵的各种分解方法 更多...
 

Public 成员函数

 Matrix (int rows, int cols)
 构造函数,主动申请与管理内存 更多...
 
 Matrix (const Matrix &M)
 实现复制构造函数 更多...
 
 Matrix (int m, int n, NAFLOAT const *val)
 复制构造函数 更多...
 
virtual ~Matrix ()
 矩阵的析构函数,释放申请的内存 更多...
 
int cols () const
 获取矩阵的列数 更多...
 
int rows () const
 获取矩阵的行数 更多...
 
Matrix getMat (int i1, int j1, int i2=-1, int j2=-1)
 获取当前矩阵的子矩阵 更多...
 
void setMat (const Matrix &M, int i, int j)
 设置当前矩阵 更多...
 
void fill (const NAFLOAT &value)
 用value填充Matrix的全部内容 更多...
 
NAFLOAT ** getValPtr () const
 获取值的指针 更多...
 
const NAFLOAT ** getConstValPtr () const
 获取常量指针 更多...
 
Matrix T () const
 实现矩阵的转置 更多...
 
Matrixoperator= (const Matrix &M)
 等于时 更多...
 
const NAFLOAT * operator[] (int row) const
 返回第row行的起始指针 更多...
 
Matrix operator+ (const Matrix &B)
 实现矩阵的加法 更多...
 
Matrix operator- (const Matrix &M)
 实现矩阵的减法 更多...
 
Matrix operator* (const Matrix &B)
 实现矩阵的乘法 更多...
 
Matrix dot (const Matrix &B) const
 实现矩阵的点乘 更多...
 
Matrix dot (NAFLOAT b) const
 矩阵的点乘 更多...
 
Matrix inv (int flag=GaussiaJordan) const
 实现矩阵的求逆 更多...
 
NAFLOAT det () const
 求矩阵行列式的值 更多...
 
int rank () const
 求矩阵的秩 更多...
 
void create (int rows, int cols)
 申请内存 更多...
 
void release ()
 释放已申请的内存 更多...
 

静态 Public 成员函数

static void setMatrixEye (Matrix &mat, const int m)
 将当前矩阵设置为单位矩阵 更多...
 
static void LU (const Matrix &A, Matrix &L, Matrix &U)
 实现矩阵的LU分解 更多...
 
static void QR (const Matrix &A, Matrix &Q, Matrix &R)
 基于豪斯荷尔德变换实现矩阵的QR分解 更多...
 
static void SVD (const Matrix &A, Matrix &U, Matrix &W, Matrix &v)
 实现奇异值分解 更多...
 
static void solve (const Matrix &A, const Matrix &b, Matrix &x, int flag=DecompositionMethod::GaussiaJordan)
 求解Ax=b的方程 更多...
 
static Matrix zeros (int rows, int cols)
 生成全0矩阵 更多...
 

Protected 属性

NAFLOAT ** m_val
 矩阵的数据 更多...
 
NAFLOAT * m_data
 
int m_rows
 行数 更多...
 
int m_cols
 列数 更多...
 
int m_step
 步长 更多...
 

友元

NA_API std::istream & operator>> (std::istream &is, Matrix &m)
 用istream的形式给矩阵赋值 更多...
 
NA_API std::ostream & operator<< (std::ostream &out, const Matrix &M)
 将矩阵中的内容导出 更多...
 

详细描述

简单矩阵类

注解
允许其它地方继承

在文件 matrix.h31 行定义.

成员枚举类型说明

◆ DecompositionMethod

枚举矩阵的各种分解方法

枚举值
GaussiaJordan 

高斯-约当消去法

在文件 matrix.h36 行定义.

构造及析构函数说明

◆ Matrix() [1/4]

NANA::Matrix::Matrix ( )

在文件 matrix.cpp21 行定义.

◆ Matrix() [2/4]

NANA::Matrix::Matrix ( int  rows,
int  cols 
)

构造函数,主动申请与管理内存

返回
参数
introws
intcols
注解

在文件 matrix.cpp30 行定义.

◆ Matrix() [3/4]

NANA::Matrix::Matrix ( const Matrix M)

实现复制构造函数

参数
M

在文件 matrix.cpp35 行定义.

◆ Matrix() [4/4]

NANA::Matrix::Matrix ( int  m,
int  n,
NAFLOAT const *  val 
)

复制构造函数

参数
m
n
val_

在文件 matrix.cpp40 行定义.

◆ ~Matrix()

NANA::Matrix::~Matrix ( )
virtual

矩阵的析构函数,释放申请的内存

在文件 matrix.cpp48 行定义.

成员函数说明

◆ cols()

int NANA::Matrix::cols ( ) const

获取矩阵的列数

返回

在文件 matrix.cpp54 行定义.

这是这个函数的调用关系图:

◆ create()

void NANA::Matrix::create ( int  rows,
int  cols 
)

申请内存

返回
: void
注解
: 未看底层代码,不要轻易调用

在文件 matrix.cpp483 行定义.

这是这个函数的调用关系图:

◆ det()

NAFLOAT NANA::Matrix::det ( ) const

求矩阵行列式的值

返回
行列式的值
注解
用选主元高斯消去法计算n阶方阵(也只有方阵才能求行列式)所对应的行列式

只有方阵才能求行列式

在文件 matrix.cpp726 行定义.

函数调用图:

◆ dot() [1/2]

Matrix NANA::Matrix::dot ( const Matrix B) const

实现矩阵的点乘

参数
B与当前矩阵行列相等的矩阵
返回

在文件 matrix.cpp599 行定义.

◆ dot() [2/2]

Matrix NANA::Matrix::dot ( NAFLOAT  b) const

矩阵的点乘

参数
b
返回

在文件 matrix.cpp610 行定义.

◆ fill()

void NANA::Matrix::fill ( const NAFLOAT &  value)

用value填充Matrix的全部内容

参数
value

在文件 matrix.cpp513 行定义.

这是这个函数的调用关系图:

◆ getConstValPtr()

const NAFLOAT ** NANA::Matrix::getConstValPtr ( ) const

获取常量指针

返回

在文件 matrix.cpp531 行定义.

◆ getMat()

Matrix NANA::Matrix::getMat ( int  i1,
int  j1,
int  i2 = -1,
int  j2 = -1 
)

获取当前矩阵的子矩阵

参数
i1
j1
i2
j2
返回

在文件 matrix.cpp63 行定义.

◆ getValPtr()

NAFLOAT ** NANA::Matrix::getValPtr ( ) const

获取值的指针

返回

在文件 matrix.cpp526 行定义.

这是这个函数的调用关系图:

◆ inv()

Matrix NANA::Matrix::inv ( int  flag = GaussiaJordan) const

实现矩阵的求逆

参数
flag
返回

在文件 matrix.cpp716 行定义.

这是这个函数的调用关系图:

◆ LU()

void NANA::Matrix::LU ( const Matrix A,
Matrix L,
Matrix U 
)
static

实现矩阵的LU分解

参数
A带分解矩阵
L下三角矩阵L
U上三角矩阵U
注解
由于此方法没有选主元,其数值运算是不稳定的

在文件 matrix.cpp103 行定义.

函数调用图:

◆ operator*()

Matrix NANA::Matrix::operator* ( const Matrix B)

实现矩阵的乘法

参数
B
返回
C = A*B

在文件 matrix.cpp586 行定义.

函数调用图:

◆ operator+()

Matrix NANA::Matrix::operator+ ( const Matrix B)

实现矩阵的加法

参数
M
返回
C = A+B

在文件 matrix.cpp562 行定义.

◆ operator-()

Matrix NANA::Matrix::operator- ( const Matrix M)

实现矩阵的减法

参数
B
返回
C = A-B

在文件 matrix.cpp574 行定义.

◆ operator=()

Matrix & NANA::Matrix::operator= ( const Matrix M)

等于时

参数
M
返回

在文件 matrix.cpp543 行定义.

◆ operator[]()

const NAFLOAT * NANA::Matrix::operator[] ( int  row) const

返回第row行的起始指针

参数
row
返回

在文件 matrix.cpp558 行定义.

◆ QR()

void NANA::Matrix::QR ( const Matrix A,
Matrix Q,
Matrix R 
)
static

基于豪斯荷尔德变换实现矩阵的QR分解

参数
A
Q
R

QR分解要求矩阵的行数大于等于列数

<设置一个单位矩阵

在文件 matrix.cpp142 行定义.

函数调用图:

◆ rank()

int NANA::Matrix::rank ( ) const

求矩阵的秩

返回
矩阵的秩
注解
用选主元高斯消去法计算矩阵的秩

拷贝一份数据,计算秩的过程,不应该改变矩阵的内容

在文件 matrix.cpp783 行定义.

函数调用图:

◆ release()

void NANA::Matrix::release ( )

释放已申请的内存

注解
未看底层代码,不要轻易调用

在文件 matrix.cpp503 行定义.

函数调用图:
这是这个函数的调用关系图:

◆ rows()

int NANA::Matrix::rows ( ) const

获取矩阵的行数

返回

在文件 matrix.cpp58 行定义.

这是这个函数的调用关系图:

◆ setMat()

void NANA::Matrix::setMat ( const Matrix M,
int  i,
int  j 
)

设置当前矩阵

参数
M
i
j

在文件 matrix.cpp81 行定义.

◆ setMatrixEye()

void NANA::Matrix::setMatrixEye ( Matrix mat,
const int  m 
)
static

将当前矩阵设置为单位矩阵

返回

在文件 matrix.cpp93 行定义.

函数调用图:

◆ solve()

void NANA::Matrix::solve ( const Matrix A,
const Matrix b,
Matrix x,
int  flag = DecompositionMethod::GaussiaJordan 
)
static

求解Ax=b的方程

参数
A
b
x
flag

在文件 matrix.cpp471 行定义.

函数调用图:

◆ SVD()

void NANA::Matrix::SVD ( const Matrix A,
Matrix U2,
Matrix W,
Matrix V 
)
static

实现奇异值分解

参数
A输入矩阵A
U左奇异向量U
D对角线给出奇异值
V右奇异向量V^T
注解
基于Householder变换以及变星QR算法对一般实矩阵A进行奇异值分解
基于Householder变换以及变星QR算法对一般实矩阵A进行奇异值分解 step1 用豪斯荷尔德变换将A约化为双对角线矩阵 step2 用变星的QR算法进行迭代,计算所有奇异值 steo3 对奇异值按非递增次序进行排列

在文件 matrix.cpp236 行定义.

函数调用图:

◆ T()

Matrix NANA::Matrix::T ( ) const

实现矩阵的转置

返回

在文件 matrix.cpp535 行定义.

◆ zeros()

Matrix NANA::Matrix::zeros ( int  rows,
int  cols 
)
static

生成全0矩阵

参数
rows
cols
返回

在文件 matrix.cpp477 行定义.

函数调用图:

友元及相关函数文档

◆ operator<<

NA_API std::ostream & operator<< ( std::ostream &  out,
const Matrix M 
)
friend

将矩阵中的内容导出

参数
out
M
返回

在文件 matrix.cpp847 行定义.

◆ operator>>

NA_API std::istream & operator>> ( std::istream &  is,
Matrix m 
)
friend

用istream的形式给矩阵赋值

参数
is
m
返回

在文件 matrix.cpp836 行定义.

类成员变量说明

◆ m_cols

int NANA::Matrix::m_cols
protected

列数

在文件 matrix.h292 行定义.

◆ m_data

NAFLOAT* NANA::Matrix::m_data
protected

在文件 matrix.h287 行定义.

◆ m_rows

int NANA::Matrix::m_rows
protected

行数

在文件 matrix.h290 行定义.

◆ m_step

int NANA::Matrix::m_step
protected

步长

在文件 matrix.h294 行定义.

◆ m_val

NAFLOAT** NANA::Matrix::m_val
protected

矩阵的数据

在文件 matrix.h286 行定义.


该类的文档由以下文件生成: