初始化Eigen::Vector4f时出现尺寸无效错误的解决方法咨询
问题解决:Eigen固定尺寸向量初始化断言错误
错误原因
Eigen::Vector4f是编译期固定为4行1列的列向量类型,你使用Eigen::Vector4f normalized(3,1);时,本质是尝试将这个固定尺寸向量的行数修改为3,违反了Eigen对固定尺寸矩阵/向量的约束,触发了断言检查失败。
解决方法
根据你的实际需求选择以下方案:
场景1:实际需要3维向量
直接将向量类型改为Eigen::Vector3f(固定3行1列),示例代码:
// 默认初始化(元素值未定义) Eigen::Vector3f normalized; // 或直接用3个元素值初始化 Eigen::Vector3f normalized(1.0f, 2.0f, 3.0f); // 或初始化所有元素为0 Eigen::Vector3f normalized = Eigen::Vector3f::Zero();
场景2:确实需要4维向量
使用符合Vector4f固定尺寸的构造方式,示例代码:
// 默认初始化 Eigen::Vector4f normalized; // 用4个元素值初始化 Eigen::Vector4f normalized(1.0f, 2.0f, 3.0f, 4.0f); // 初始化所有元素为0 Eigen::Vector4f normalized = Eigen::Vector4f::Zero(); // 初始化所有元素为指定常量 Eigen::Vector4f normalized = Eigen::Vector4f::Constant(0.5f);
补充说明
Eigen中VectorNf(N为数字)系列都是固定尺寸的列向量,只有VectorXf这类带X的类型才是动态尺寸向量,支持运行时调整行数/列数。
内容的提问来源于stack exchange,提问作者Bilal
相关产品推荐
相关产品推荐

