簡體   English   中英

如何以塊為單位初始化“本征”矩陣?

[英]How can I initialize an “Eigen” - Matrix blockwise?

對不起,我無法創建一個更好的主題。

我的意思是:我有一個2d矢量a和一個3d矢量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,則可以執行以下操作:

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

這是您可以使用lambda進行的操作(假設沒有使用構造函數調用的簡單方法):

auto generateB = [&]() -> Vector3d {
    Vector3d b(0, 0, 1);
    b.head<2>() = a;
    return b;
  };

然后您將像這樣使用它:

auto const actualB = generateB();
Vector3d const anotherB = generateB();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM