2017-12-19 19 views
0

Ich habe eine m x n Matrix a und m-Element-Spalte Vektor v. Ich möchte b so berechnen, dass b(i, j) == min(v(i), a(i, j)). Wie drücke ich das in eigen 3.3 aus?Zeilenweise min() der Matrix mit Spaltenvektor

a.colwise().min(v) nicht, weil CwiseBinaryOp erlaubt keine min() Member-Funktion, im Gegensatz zu ArrayBase. Ebenso ist operator*() erlaubt, aber nicht min().

Gibt es einen besseren Weg als v in eine Matrix zu verwandeln, indem man seine Elemente horizontal repliziert?

Antwort

0

Ich fand heraus, dass ich dies mit array(), rowwise() und replicate() erreichen kann. Insbesondere:

MatrixXd a(3,2); 
VectorXd v(3); 
a << 1, 2, 3, 4, 5, 6; 
v << 3, 4, 5; 
cout << a.array().min(v.rowwise().replicate(2).array()) << endl; 
Verwandte Themen