eigen2を使用し、行列 A を指定
a_0_0, a_0_1, a_0_2, ...
a_1_0, a_1_0, a_1_2, ...
...
および行列 B:
b_0_0, b_0_1, b_0_2, ...
b_1_0, b_1_1, b_1_2, ...
...
A と B の次元が同じ場合、行をインターリーブして次のように生成します。
a_0_0, a_0_1, a_0_2, ...
b_0_0, b_0_1, b_0_2, ...
a_1_0, a_1_0, a_1_2, ...
b_1_0, b_1_1, b_1_2, ...
...
明らかに、適切な次元の出力行列を作成し、各入力行列をループして要素を結果に割り当てる関数を作成できます。ただし、車輪の再発明はしたくないので、eigen2 がこの種の行列演算をエレガントに表現するメカニズムを既に持っている場合は、それを使用したいと思います。
私は eigen2 docs を調べましたが、明らかに正しいものは何もありませんでした。私が見つけた最も近いものはMatrixBase::selectでしたが、それは「aからの要素またはbからの要素」を行います。ここで、「aからの要素、次にbからの要素」が必要です。
高速パスでこれを行う必要はなく、初期化時にのみ行う必要があるため、効率は最優先事項ではありません。
行列を表現するためのより良い方法がある場合は、フォーマットについてお詫び申し上げます。