特征C++稀疏矩阵的元素乘积和除法
Eigen C++ Sparse Matrix elementwise product and divide
我正在尝试将在特征C++密集矩阵类(MatrixXd
从<Eigen/Dense>
)中实现的一些方法转换为具有特征C++稀疏矩阵的方法(如SparseMatrix<double>
从<Eigen/Sparse>
)。
许多方法可以通过简单的机会MatrixXd
直接转换为SparseMatrix<double>
。然而,有些方法不能。
我遇到的一个问题是将以下元素被除数转换为稀疏矩阵方法:
(beta.array() / beta.cwiseAbs().array()).sum()
最初,beta
被声明为MatrixXd beta
。现在,如果我将beta
声明为SparseMatrix<double> beta
,则没有更多相应的array()
方法允许我执行上述操作。
我仍然应该如何使用稀疏矩阵执行元素操作?
有没有什么有效的方法可以将密集矩阵转换为稀疏矩阵,反之亦然?
这是不受支持的,因为您会严格计算任何显式零的0/0。如果矩阵处于压缩模式,您可以解决问题,请务必调用:
beta.makeCompressed();
然后将非零映射为密集阵列:
Map<ArrayXd> a(beta.valuePtr(), beta.nonZeros();
(a / a.abs()).sum;
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 用除法反转向量的元素
- 创建乘积数组,它包含数组中所有元素的乘积,这些元素可以被A[i]整除,而不使用除法运算符
- 特征C++稀疏矩阵的元素乘积和除法