繁体   English   中英

我可以声明未知类型的本征矩阵,还是至少声明一个泛型矩阵并稍后实例化?

[英]Can i declare an Eigen matrix of unknown type, or at least declare a generic matrix and instantiate later?

我正在尝试编写一个将二进制文件中的数据读入本征矩阵的函数。 在编译时无法知道要读取的数据类型。 因此,我需要一种在编译时更改本征矩阵的数据类型的方法。 据我所知,没有办法将现有的本征矩阵转换为其他类型。

我怎样才能做到这一点?

我可以为函数提供什么,以便在返回时,将有二进制数据的本征矩阵?

是否可以声明一个通用矩阵,例如Eigen::PlainObjectBase Data; 那将保持不实例化并在函数内部实例化?

我怎样才能做到这一点?

如果可能,请记录对象的数据类型。 也许矫kill过正,但是请看一下SQLite并尝试将数据存储为类型的TEXT条目和二进制数据的BLOB 这将使您可以通过简单地查询数据库来确定类型。

我以前没有使用过Eigen,但是如果您别无选择(也许您有很多现有的二进制数据),请尝试创建几种不同类型的矩阵,然后尝试将数据拟合到它们中。 如果可行,则可以创建一个对象,将指向这些数据类型的指针作为成员,作为矩阵类型的成员,然后仅在需要时向对象提供引用。

我可以给函数提供什么,以便在返回时,将有二进制数据的本征矩阵?

你至少应该给这个功能

  • 二进制数据的位置
  • 二进制数据的类型(如果可能)
  • 引用本征矩阵(或包含该矩阵的对象!)的指针

是否可以声明一个通用矩阵,例如Eigen :: PlainObjectBase Data; 那将保持不实例化并在函数内部实例化?

是的,理想情况下,您将能够创建一个指针并仅在其他地方引用它。

您可以使用一个类来包含您的矩阵,而只需在别处引用您的类即可。 如果没有令人讨厌的hacks,您将无法在运行时使用诸如Eigen::PlainObjectBase模板。 如果您是受虐狂,甚至可以预先分配“足够的空间”,然后确定您要填充的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM