8.5.2. MDOMatrix

class MDOMatrix

表示具有double值的矩阵类。通常用于与矩阵属性交互

方法

coo

用索引和值构造一个稀疏矩阵

coo

构造一个包含行索引、列索引和值的稀疏矩阵

csc

构造压缩稀疏列 (CSC) 格式的矩阵

csr

构造压缩的稀疏行 (CSR) 格式化矩阵

dense

构造一个稠密矩阵

dense

std::initializer_list 构造一个密集矩阵

full

构造一个矩阵内部元素全为 value 的矩阵

identity

构造一个主对角线元素都是1的方阵

ones

构造一个值全为1的矩阵

sparse

std::initializer_list 构造稀疏矩阵

zero

构造一个元素全为0的矩阵

cols

该矩阵中包含的列数

data

检索该矩阵中所有非零元素的值

indices

检索该矩阵中所有非零元素的索引

nonzeros

检索该矩阵中非零元素的数量

rows

该矩阵的行数

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 – 所有非零元素的行索引。它应该与 jdata 长度相同

  • std::initializer_list<int> j – 所有非零元素的列索引。它应该与 idata 长度相同

  • std::initializer_list<double> data – 所有元素的值。它应该与 ij 长度相同

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

该矩阵的行数