8.5.2. MDOMatrix¶
-
class MDOMatrix¶
表示具有double值的矩阵类。通常用于与矩阵属性交互
方法
用索引和值构造一个稀疏矩阵
构造一个包含行索引、列索引和值的稀疏矩阵
构造压缩稀疏列 (CSC) 格式的矩阵
构造压缩的稀疏行 (CSR) 格式化矩阵
构造一个稠密矩阵
用 std::initializer_list 构造一个密集矩阵
构造一个矩阵内部元素全为 value 的矩阵
构造一个主对角线元素都是1的方阵
构造一个值全为1的矩阵
用 std::initializer_list 构造稀疏矩阵
构造一个元素全为0的矩阵
该矩阵中包含的列数
检索该矩阵中所有非零元素的值
检索该矩阵中所有非零元素的索引
检索该矩阵中非零元素的数量
该矩阵的行数
-
static MDOMatrix coo(int rows, int cols, int nonzeros, int *ind, double *data)¶
用索引和值构造一个稀疏矩阵
- Parameters:
int rows – 行数
int cols – 列数
int nonzeros – 非零元素的数量
int* ind – 所有非零元素的索引
double* data – 所有非零元素的值
- Returns:
新创建的矩阵
-
static MDOMatrix coo(int rows, int cols, int nonzeros, int *row, int *col, double *data)¶
构造一个包含行索引、列索引和值的稀疏矩阵
- Parameters:
int rows – 行数
int cols – 列数
int nonzeros – 非零元素的数量
int* row – 所有非零元素的行索引
int* col – 所有非零元素的列索引
double* data – 所有非零元素的值
- Returns:
新创建的矩阵
-
static MDOMatrix csc(int rows, int cols, int nonzeros, int *ptr, int *ind, double *data)¶
构造压缩稀疏列 (CSC) 格式的矩阵
- Parameters:
int rows – 行数
int cols – 列数
int nonzeros – 非零元素的数量
int* ptr – 矩阵中包含的列的 ‘ind’ 中的开始索引
int* ind – 所有非零元素的行索引
double* data – 所有非零元素的值
- Returns:
新创建的矩阵
-
static MDOMatrix csr(int rows, int cols, int nonzeros, int *ptr, int *ind, double *data)¶
构造压缩的稀疏行 (CSR) 格式化矩阵
- Parameters:
int rows – 行数
int cols – 列数
int nonzeros – 非零元素的数量
int* ptr – 矩阵中包含的行的 ‘ind’ 中的开始索引
int* ind – 所有非零元素的列索引
double* data – 所有非零元素的值
- Returns:
新创建的矩阵
-
static MDOMatrix dense(int rows, int cols, double *data)¶
构造一个稠密矩阵
- Parameters:
int rows – 行数
int cols – 列数
double* data – 所有元素的值。它应该至少有 行数*列数 个元素。
- Returns:
新创建的矩阵
-
static MDOMatrix dense(int rows, int cols, std::initializer_list<double> data)¶
用 std::initializer_list 构造一个密集矩阵
- Parameters:
int rows – 行数
int cols – 列数
std::initializer_list<double> data – 所有元素的值。它应该至少有 行数*列数 个元素
- Returns:
新创建的矩阵
-
static MDOMatrix full(int rows, int cols, double value)¶
构造一个矩阵内部元素全为 value 的矩阵。
- Parameters:
int rows – 行数
int cols – 列数
double value – 返回矩阵中所有元素的值
- Returns:
新创建的矩阵
-
static MDOMatrix identity(int n)¶
构造一个主对角线元素都是1的方阵
- Parameters:
int n – 新矩阵的维数,即该正方形矩阵的行数和列数。
- Returns:
新创建的矩阵
-
static MDOMatrix ones(int rows, int cols)¶
构造一个值全为1的矩阵
- Parameters:
int rows – 行数
int cols – 列数
- Returns:
新创建的矩阵
-
static MDOMatrix sparse(int rows, int cols, std::initializer_list<int> i, std::initializer_list<int> j, std::initializer_list<double> data)¶
用 std::initializer_list 构造稀疏矩阵
- Parameters:
int rows – 行数
int cols – 列数
std::initializer_list<int> i – 所有非零元素的行索引。它应该与 j 和 data 长度相同
std::initializer_list<int> j – 所有非零元素的列索引。它应该与 i 和 data 长度相同
std::initializer_list<double> data – 所有元素的值。它应该与 i 和 j 长度相同
- Returns:
新创建的矩阵
-
static MDOMatrix zero(int rows, int cols)¶
构造一个元素全为0的矩阵
- Parameters:
int rows – 行数
int cols – 列数
- Returns:
新创建的矩阵
-
int cols()¶
该矩阵中包含的列数
- Returns:
该矩阵中包含的列数
-
const double *data()¶
检索该矩阵中所有非零元素的值
- Returns:
该矩阵中所有非零元素的值
-
const int *indices()¶
检索该矩阵中所有非零元素的索引
- Returns:
所有非零元素的索引,其长度可以通过 nonzeros() 知道。 第i个元素的坐标可以通过以下公式计算: ‘’’cpp row[i] = indices[i] / cols(); col[i] = indices[i] % cols(); ‘’’
Note
返回的数组的顺序可能无法保证
-
int nonzeros()¶
检索该矩阵中非零元素的数量
- Returns:
非零元素的总数
-
int rows()¶
该矩阵的行数
- Returns:
该矩阵的行数
-
static MDOMatrix coo(int rows, int cols, int nonzeros, int *ind, double *data)¶