我有一个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行
有没有办法实现这个目标?
答案 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);
固定大小写的构造函数。
请注意,我建议您使用此最新版本,因为如果您非常严格地阅读文档,它不易出错,其他重载仅适用于动态大小的矩阵:
动态大小矩阵的构造函数。