NANA
|
简单矩阵类 更多...
#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 |
实现矩阵的转置 更多... | |
Matrix & | operator= (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) |
将矩阵中的内容导出 更多... | |
NANA::Matrix::Matrix | ( | ) |
在文件 matrix.cpp 第 21 行定义.
NANA::Matrix::Matrix | ( | int | rows, |
int | cols | ||
) |
NANA::Matrix::Matrix | ( | const Matrix & | M | ) |
NANA::Matrix::Matrix | ( | int | m, |
int | n, | ||
NAFLOAT const * | val | ||
) |
|
virtual |
矩阵的析构函数,释放申请的内存
在文件 matrix.cpp 第 48 行定义.
int NANA::Matrix::cols | ( | ) | const |
void NANA::Matrix::create | ( | int | rows, |
int | cols | ||
) |
NAFLOAT NANA::Matrix::det | ( | ) | const |
Matrix NANA::Matrix::dot | ( | NAFLOAT | b | ) | const |
void NANA::Matrix::fill | ( | const NAFLOAT & | value | ) |
const NAFLOAT ** NANA::Matrix::getConstValPtr | ( | ) | const |
Matrix NANA::Matrix::getMat | ( | int | i1, |
int | j1, | ||
int | i2 = -1 , |
||
int | j2 = -1 |
||
) |
NAFLOAT ** NANA::Matrix::getValPtr | ( | ) | const |
Matrix NANA::Matrix::inv | ( | int | flag = GaussiaJordan | ) | const |
const NAFLOAT * NANA::Matrix::operator[] | ( | int | row | ) | const |
int NANA::Matrix::rank | ( | ) | const |
void NANA::Matrix::release | ( | ) |
int NANA::Matrix::rows | ( | ) | const |
void NANA::Matrix::setMat | ( | const Matrix & | M, |
int | i, | ||
int | j | ||
) |
|
static |
实现奇异值分解
A | 输入矩阵A |
U | 左奇异向量U |
D | 对角线给出奇异值 |
V | 右奇异向量V^T |
在文件 matrix.cpp 第 236 行定义.
Matrix NANA::Matrix::T | ( | ) | const |
|
static |