c++ - 如何按 block 初始化 "Eigen"- 矩阵?

标签 c++ eigen

对不起这个主题 - 我没能创造出更好的...

我的意思是:我有一个 2d-Vector a 和一个 3d-Vector b。当我初始化 b 时,b(0,1) 应设置为 a,b(2) 应设置为 1。此代码有效:

    const Vector2d a(1,2);
    Vector3d b( 0,0,1 );
    b.head<2>() = a;

但我更愿意拥有的(除其他外,因为 const):

    const Vector2d a(1,2);
    const Vector3d b( a, 1 );

这行不通。有办法实现吗?

最佳答案

如果没有 const 你会这样做:

Vector3d b;
b << a, 1;

如果你真的想让它成为常量,那么你可以这样做:

const Vector3d b = (Vector3d() << a, 1).finished();

关于c++ - 如何按 block 初始化 "Eigen"- 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934798/

相关文章:

c++ - Eigen :求一个三角矩阵

c# - C++ Interop 的局限性(隐式 PInvoke)

c++ - 如果用户输入超过字符数组中设置的字符数怎么办?

c++ - 智能指针包装 CoTaskMemAlloc 和 CoTaskMemFree

c++ - vector 计数函数 C++

c++ - 从模板函数返回的特征矩阵改变值

c++ - 将 OpenGL 与 Eigen 一起用于存储顶点数据和 glVertexAttribPointer

c++ - C++中的特征库是否有动态 vector 或矩阵

c++ - Spectra 的 SymEigsShiftSolver 不返回特征向量吗?

c++ - 使用 Visual C++ Express 2010 IDE 编译和使用 cl 命令在控制台下编译时的不同 exe 大小