使用特征矩阵作为模板

时间:2017-03-28 23:18:10

标签: templates eigen eigen3

请帮我转换这个功能,以便它可以接受MatrixXf,Matrix3f,Matrix4f,我读了推荐使用MatrixBase的Eigen手册但是没有工作,Eigen :: Ref类也没有。谢谢。

void MatrixIO::FEigentoFile(const Eigen::MatrixXf& in_mat,
                            const std::string filename)
{
  fmat fmat_pb;
  fmat_pb.set_rows(in_mat.rows());
  fmat_pb.set_cols(in_mat.cols());
  fmat_pb.mutable_data()->Reserve(in_mat.rows() * in_mat.cols());
  for (int i = 0; i < in_mat.rows(); i++)
  {
    for (int j = 0; j < in_mat.cols(); j++)
    {
      float c = in_mat(i, j);
      fmat_pb.add_data(c);
    }
  }
  std::fstream output(filename,
                      std::ios::out | std::ios::trunc | std::ios::binary);
  if (!fmat_pb.SerializeToOstream(&output))
  {
    LOG(INFO) << "Failed to write to file." << std::endl;
  }
  return;
}

1 个答案:

答案 0 :(得分:0)

{{1}}

这应该接受MatrixX *作为参数。