特征3:写出稀疏矩阵
Eigen3: Writing out sparse matrix
本文关键字:特征 更新时间:2023-10-16
我使用以下代码在 Eigen3 中创建了一个稀疏的 martrix:
#include <eigen3/Eigen/Sparse>
#include <eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h>
#include <vector>
using SpMatrix = Eigen::SparseMatrix<double>;
using Eigen::SparseMatrix;
using S = Eigen::Triplet<double>;
using namespace std;
using AdjacenyMatrix = SpMatrix;
int main() {
vector <S> nonzero_compenents;
AdjacenyMatrix am(10, 10);
nonzero_compenents.push_back(move(S(1, 1, 1.0)));
am.setFromTriplets(nonzero_compenents.begin(), nonzero_compenents.end());
bool s = saveMarket(am, "/home/morris/Schreibtisch/sparse_matrices");
return 0;
}
不幸的是,代码无法编译。MarketIO.h
似乎有问题:
In file included from /home/morris/sparse/main.cpp:2:0:
/usr/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h: In function ‘void Eigen::internal::PutMatrixElt(Scalar, int, int, std::ofstream&)’:
/usr/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h:87:9: error: no match for ‘operator<<’ (operand types are ‘std::ofstream {aka std::basic_ofstream<char>}’ and ‘int’)
out << row << " "<< col << " " << value << "n";
^
。有什么建议吗?
正如@ggael所说:不要包含单个文件,而是包含它们的模块/目录。请注意,在这种情况下,您还需要从路径中删除src
。
以前:
#include <eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h>
现在:
#include <eigen3/unsupported/Eigen/SparseExtra>
完整代码:
#include <eigen3/Eigen/Sparse>
#include <eigen3/unsupported/Eigen/SparseExtra>
#include <vector>
using SpMatrix = Eigen::SparseMatrix<double>;
using Eigen::SparseMatrix;
using S = Eigen::Triplet<double>;
using namespace std;
using AdjacenyMatrix = SpMatrix;
int main() {
vector <S> nonzero_compenents;
AdjacenyMatrix am(10, 10);
nonzero_compenents.push_back(move(S(1, 1, 1.0)));
am.setFromTriplets(nonzero_compenents.begin(), nonzero_compenents.end());
bool s = saveMarket(am, "/home/morris/Schreibtisch/sparse_matrices");
return 0;
}
现在它应该使用
例如g++ -std=c++11 mycode.cc
#include <fstream>
#include <Eigen/Sparse>
#include <unsupported/Eigen/SparseExtra>
而不是
#include <eigen3/Eigen/Sparse>
#include <eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h>
代码编译
注意:#include <eigen3/unsupported/Eigen/SparseExtra>
不编译
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 特征命名访问向量段
- 将特征矩阵的向量设置为0
- 特征:模板函数中矩阵的平面图
- basic_string的前导/尾部不区分空格的特征
- 特征 3 类的模板专用化
- 特征 c++:复矩阵的面积双曲正切(atanh)
- C++ 中的特征向量计算
- 根据C++标准的定义实现"is_similar"类型特征
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 有没有办法找到特征矩阵系数的中值?
- 如何将高维数据映射到特征类型?
- 将平面阵列重塑为复杂的特征类型
- 特征 LLT 模块给出不正确的结果?
- 特征模板化函数和维度
- 特征稀疏向量:求最大系数
- 特征 3.3.x:如何在所有行中操作 lamba?
- 如何将向量断言到特征矩阵