微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图将特征矩阵强制为硬编码地址

如何解决试图将特征矩阵强制为硬编码地址

我有一个基于 Eigen 的大型库,可以在 Linux 上运行良好,但现在需要移植到没有堆的嵌入式环境中。

理论上,使用 Map 这似乎是可行的,但如果有人能证实我对具体细节的理解,我将不胜感激。

所有特征矩阵当前都存储在一个结构体中,例如,

struct {
    Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> array1;
    Eigen::Matrix<double,Eigen::Dynamic> array2;
} my_struct;

my_struct.array1 = Eigen::Matrix<double,Eigen::Dynamic>::Zero(rows,cols);
my_struct.array2 = Eigen::Matrix<double,cols);

我尝试在结构中使用 Map 但这给了我各种各样的编译错误,我想我可能以错误的方式看待问题。

所以现在我想我应该做类似的事情

struct {
    double *array1_addr;
    double *array2_addr;
} my_struct;

my_struct.array1_addr = (double *)0x100000; // address of first array
my_struct.array2_addr = (double *)0x200000; // address of second array

Eigen::Map< Eigen::Matrix<double,Eigen::Dynamic> > map1(my_struct.array1_addr,rows,cols);
map1.setZero();
Eigen::Map< Eigen::Matrix<double,Eigen::Dynamic> > map2(my_struct.array2_addr,cols);
map2.setZero();

也就是说,我从结构体中取出所有数组,并在我使用它的任何地方使用 Map 重新指定数组的地址。

有更好的方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。