2017-02-10 8 views
1

Ich möchte die boolesche Matrix plus machen. Wie könnte ich das in Eigen machen? Mein folgendes Beispiel gibt nur einen Skalar +.Eigen Boolesche Matrix plus

#include "Eigen/Dense" 
#include <iostream> 

using namespace std; 
using namespace Eigen; 


int main() 
{ 
    Eigen::Matrix<bool, 4, 4> m; 
    m << 0,1,1,1, 
    1,0,1,0, 
    1,1,0,0, 
    1,1,1,0; 
    cout << m + m; //should be logical_and here 
} 

Wie könnte ich die logische_and hier verwenden?

Antwort

0

Eigen scheint keine spezifischen Funktionen zu bieten, um mit booleschen Matrizen zu arbeiten. Sie können jedoch die Tatsache, dass boolesche Werte zuverlässig in 0 (false) und 1 (true) konvertiert werden, verwenden (siehe bool to int conversion). Man beachte, dass 0=0*0=0*1=1*0 und 1*1=1 es offensichtlich ist, dass die Multiplikation der booleschen Werte als Integer (bis auf den Typ) die gleiche ist wie für logisch und. Daher sollte folgendes funktionieren:

#include "Eigen/Dense" 
#include <iostream> 

using namespace std; 
using namespace Eigen; 


int main() 
{ 
    Eigen::Matrix<bool, 4, 4> m; 
    m << 0,1,1,1, 
    1,0,1,0, 
    1,1,0,0, 
    1,1,1,0; 
    Eigen::Matrix<bool, 4, 4> result = m.cwiseProduct(m); 
    cout << result; 
} 
+0

wirkt wie ein Zauber! –

+0

Vielleicht noch eine Frage, wie boolesche Matrixmultiplikation? –

+0

Was meinst du mit Multiplikation? Das logische UND ist die "Multiplikation" in der Booleschen Algebra. Fragen Sie nach dem logischen ODER? –

Verwandte Themen