15

私は現在 MATLAB プロジェクトに取り組んでおり、C++ と Eigen を使用して最も計算量の多い部分を再実装したいと考えています。次の操作 (MATLAB 構文) を実行する方法があるかどうかを知りたいです。

B = A(A < 3);

MATLAB に慣れていない方のために説明すると、上記のコマンドは、値が 3 未満の A のセルで構成される行列 B を初期化します。

Eigenフォーラムの投稿から、次を使用して目的のインデックスを取得できることがわかりました。

MatrixXi indices = (A.array() < 3).cast<int>();

私がしたいのは次のようなものです:

MatrixXd B = A(A.array() < 3);

ありがとう。

4

4 に答える 4

10

libiglには、Eigen を MATLAB のように感じさせるための多くのラッパーがあります。特に、次のslice関数を呼び出すことができます。

igl::slice(A,indices,B);

これは MATLAB の

B = A(indices)
于 2013-09-14T21:21:19.617 に答える
5

現在、Eigen BugTracker システムに提出された索引付けによって部分行列を選択するための機能要求があります。したがって、そのようなことが可能になるとは思えません。

考えられる唯一の回避策は、データを手動でコピーすることです。あまり良くありませんが。

于 2012-11-24T10:46:30.643 に答える