如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?
Posted
技术标签:
【中文标题】如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?【英文标题】:How to save Eigen::DiagonalMatrix in MarketIO format in Eigen? 【发布时间】:2016-07-20 17:37:30 【问题描述】:使用Eigen 3.2.1
,我正在尝试以MarketIO
格式保存Eigen::DiagonalMatrix
,如下所示:
#include <Eigen/Sparse>
#include <Unsupported/Eigen/SparseExtra>
using namespace Eigen;
...
size_t n = XX;
DiagonalMatrix<num_t, Dynamic> W(n);
...
saveMarket(W, "W.txt"); // error propagates from here
但是,我收到以下错误:
MarketIO.h|236|error: 'const class Eigen::DiagonalMatrix<double, -1>' has no
member named 'nonZeros'
这里有什么问题?这是为Diagonal Matrices
实现的吗?
提前感谢您的帮助。
【问题讨论】:
然后尝试 3.2.9 或 3.3-beta1 @kangshiyin:你确定3.2.9+有吗? 不!至少在Eigen 3.2.9
中,.nonZeros()
没有在DiagonalMatrix.h
中为DiagonalMatrix
定义MarketIO.h
仍然使用.nonZeros()
。
好的,看来不受支持的部分太旧了...
只有 3 个数组。您可以手动保存它们。
【参考方案1】:
好的!目前唯一省力的解决方案是使用以下方法:
saveMarketVector(W.diagonal(), "W.txt");
【讨论】:
以上是关于如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?的主要内容,如果未能解决你的问题,请参考以下文章