2013-04-10 48 views
6

我移植使用徵3模板庫中的一些MATLAB代碼C++,我期待有一個良好的映射爲這個共同的MATLAB成語:如何使用Eigen 3表示「<真或假> = <array><= <scalar>」?

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

ans = 

    1  1  1  0  0 

所以,比較的數組和標量,返回一組具有相同形狀的布爾值。

據我所知,Eigen的數組類有係數明智的比較運算符,但如果我正確解釋文檔,他們只能與另一個數組一起工作;不具有標量值。

有沒有一些選項我錯過了,將執行與標量的比較?或者做不到這一點,這是一種很好的習慣用法,可以創建一個適當形狀的數組,其中充滿了表達RHS的標量值?

回答

7

隨着從#eigen IRC頻道感謝ChriSopht_

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

所以,關鍵是使用.array()得到的係數明智的運營商,當然然後得到的返回類型吧...

+0

如果你不想處理返回類型,並且你正在使用C++ 11,那麼你總是可以使用'auto result = compareMat.array()<= cutoff;'。 – GJStein 2016-07-25 01:17:54

相關問題