映射(整形)静态特征矩阵

时间:2017-07-01 12:51:25

标签: c++ eigen eigen3

我有一个2 x 4矩阵,我希望将其表示为1 x 8向量,将colPivHouseholderQr().solve中的结果放入其中,然后返回该2 x 4矩阵。 我看过this并尝试了以下内容:

Matrix<float, 2, 4> X;
Eigen::Map<Matrix<float, 1, 8>> X_vec(X.data(), 2, 4); // Run-time error
X_vec = A.colPivHouseholderQr().solve(b);
return X;

但是我在运行时遇到错误:

  

断言失败:v == T(值),文件eigen \ eigen \ src / Core / util / XprHelper.h,第110行

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

int table[256] /* For 8 bit lookup */ for (int i=0; i<256; i++) { table[i] = table[i/2] + i&1 } 构造函数的第二个和第三个参数分别是 new 矩阵的行数和列数。对于固定大小的矩阵,它们应与作为模板参数提供的矩阵相同。所以,你应该写:

Eigen::Map

作为替代方案,您可以使用仅为固定大小矩阵提供的overloaded constructor,如Eigen所述:

Eigen::Map<Matrix<float, 1, 8>> X_vec(X.data(), 1, 8);
  

固定大小写的构造函数。

请注意,我建议您使用此最新版本,因为如果您非常严格地阅读文档,它不易出错,其他重载仅适用于动态大小的矩阵:

  

动态大小矩阵的构造函数。