写入/读取特征到文件的sparseVector

时间:2016-04-26 14:02:00

标签: c++ eigen eigen3 writefile

我就是这样:

How to write/read an Eigen matrix from binary file

namespace Eigen{
template<class Matrix>
void write_binary(const char* filename, const Matrix& matrix){
    std::ofstream out(filename,ios::out | ios::binary | ios::trunc);
    typename Matrix::Index rows=matrix.rows(), cols=matrix.cols();
    out.write((char*) (&rows), sizeof(typename Matrix::Index));
    out.write((char*) (&cols), sizeof(typename Matrix::Index));
    out.write((char*) matrix.data(), rows*cols*sizeof(typename Matrix::Scalar) );
    out.close();
}
template<class Matrix>
void read_binary(const char* filename, Matrix& matrix){
    std::ifstream in(filename,ios::in | std::ios::binary);
    typename Matrix::Index rows=0, cols=0;
    in.read((char*) (&rows),sizeof(typename Matrix::Index));
    in.read((char*) (&cols),sizeof(typename Matrix::Index));
    matrix.resize(rows, cols);
    in.read( (char *) matrix.data() , rows*cols*sizeof(typename Matrix::Scalar) );
    in.close();
}
} // Eigen::

但问题是稀疏模块: 当我想写SparseVector时,我得到:

  

void Eigen :: write_binary(const char *,const Matrix&amp;)[with Matrix =   本征::斯帕塞夫克托]”:   ../re_fol/createComparisonData.cpp:54:33:从这里实例化   ../re_fol/createComparisonData.cpp:33:5:错误:类型无效的强制转换   'const Storage {aka const Eigen :: internal :: CompressedStorage}'输入'char *'make:*** [re_fol / createComparisonData.o]错误   1

这一行:

out.write((char*) matrix.data(), rows*cols*sizeof(typename Matrix::Scalar) );

我知道向量是特征中特殊类型的矩阵,但是稀疏模块有一些可能是另一种类型的索引数据......?:

const Eigen::internal::CompressedStorage<double,
> int>}’ to type ‘char*’ make:

0 个答案:

没有答案