2013-04-10 6 views
6

私はアイゲン3テンプレートライブラリを使用して、私はこの共通のMATLABイディオムのための良好なマッピングを探しています C++ にいくつかのMATLABコードを移植しています:比較、Eigen 3を使用して「<array-of-true-or-false> = <array><= <scalar>」と表現するにはどうすればよいですか?

K>> [1 2 3 4 5] <= 3 

ans = 

    1  1  1  0  0 

ので、配列とスカラーを持ち、同じ形をしたブール値の配列を返します。

私はEigenのの配列クラスには係数ごとの比較演算子があることを理解していますが、正しく解釈すると別の配列でしか動作しません。スカラー値ではありません。

私がスカラーとの比較を行うことができなかったいくつかのオプションがありますか?そうでない場合は、適切な形のの配列を式のRHSのスカラー値で埋めるのがいいでしょうか? #eigen IRCチャンネルからChriSopht_のおかげで

答えて

7

VectorXd compareMat = ...; 
double cutoff = 3; 
Matrix<bool, Dynamic, 1> result = compareMat.array() <= cutoff; 

だから、トリックが係数単位の演算子で取得するために.array()を使用している、そしてもちろんその後、戻り値の型の権利を取得...

+0

戻り値の型を扱わずにC++ 11を使っている場合は、常に 'auto result = compareMat.array()<= cutoff;'を使うことができます。 – GJStein

関連する問題

 関連する問題