我正在尝试编写一个函数,将二进制文件中的数据读入特征矩阵。在编译时,无法知道要读取的数据类型。因此,我需要一种在编译时更改特征矩阵的数据类型的方法。据我所知,没有办法将现有的特征矩阵转换为不同的类型。
我该怎么做?
我可以将什么赋予我的函数,以便在它返回时,将存在二进制数据的特征矩阵?
是否可以声明一个通用矩阵,如Eigen::PlainObjectBase Data;
,它将保持不实例化并在函数内实例化?
答案 0 :(得分:0)
我该怎么做?
如果可能,使用对象记录数据类型。也许是矫枉过正,但请查看SQLite并尝试将数据存储为类型的TEXT
条目和二进制数据的BLOB
。这将允许您通过简单地查询数据库来确定类型。
我之前没有使用过Eigen,但是如果你没有其他选择(也许你有很多现有的二进制数据),请尝试创建几个不同类型的矩阵并尝试将数据拟合到它们。如果可行,您可以使用指向这些数据类型的指针创建一个对象作为成员,矩阵是什么类型的成员,并在需要时询问对象以供参考。
我可以将什么赋予我的函数,以便在返回时,将存在二进制数据的特征矩阵?
你应该至少给这个功能
是否可以声明一个通用矩阵,如Eigen :: PlainObjectBase Data;这将保持没有实例化并在函数内实例化?
是的,理想情况下,您可以创建指针并在其他地方引用它。
您可以使用类来包含矩阵,只需在其他地方引用您的类。在没有unpleasant hacks的运行时期间,您无法使用Eigen::PlainObjectBase
等模板。如果你是一个受虐狂,你甚至可以预先分配足够的空间"并确定你填入的内容。