Gibt es eine einfache Möglichkeit, die Säule weise Punktprodukt von 2 Matrizen zu bewerten (nennen wir sie A
und B
vom Typ Eigen::MatrixXd
), die Abmessungen mxn
, ohne A*B
Auswertung oder ohne zu haben, auf for
loops? Der resultierende Vektor hätte die Dimensionen 1xn
oder nx1
. Auch ich versuche, dies mit Eigen in C++ zu tunColumn-weise Skalarprodukt in Eigen C++
6
A
Antwort
0
Hier ist, wie ich es mit einer Eigen::Map
tun würde (vorausgesetzt, reellen Matrizen, kann über die Einnahme adjoint zu komplex verlängern), wo rows
und cols
die Zahl bezeichnen Zeilen/Spalten:
#include <Eigen/Dense>
#include <iostream>
int main()
{
Eigen::MatrixXd A(2, 2);
Eigen::MatrixXd B(2, 2);
A << 1, 2, 3, 4;
B << 5, 6, 7, 8;
int rows = 2, cols = 2;
Eigen::VectorXd vA = Eigen::Map<Eigen::VectorXd>(
const_cast<double *>(A.data()), rows * cols, 1);
Eigen::VectorXd vB = Eigen::Map<Eigen::VectorXd>(
const_cast<double *>(B.data()), rows * cols, 1);
double inner_prod = (vA.transpose() * vB).sum();
std::cout << inner_prod << std::endl;
}
5
Es gibt viele Möglichkeiten, dies, alle Durchführung lazy evaluation zu erreichen:
res = (A.array() * B.array()).colwise().sum();
res = (A.cwiseProduct(B)).colwise().sum();
Und mein Favorit:
res = (A.transpose() * B).diagonal();
Verwandte Themen
- 1. Spärliches Skalarprodukt in SQL
- 2. compilieren Eigen C++ QT
- 3. Eigen C++ Assertion fehlgeschlagen
- 4. In EIGEN
- 5. Eigen MatrixXd Push zurück in C++
- 6. Wie Eigen Bibliothek zu C++ Projekt hinzufügen
- 7. Wie funktioniert das Skalarprodukt in einem Zellenfeld in MATLAB?
- 8. Rotationsmatrix in Eigen
- 9. Kreuzproduktmatrix in Eigen
- 10. C++ Eigen move arrayXXd zu MatrixXd
- 11. So speichern Sie Eigen :: DiagonalMatrix im MarketIO-Format in Eigen?
- 12. Explizite Typ-Deklaration Vs automatisch in Eigen-Ausdrücke in C++
- 13. Eigen Ausrichtung gibt
- 14. Python: Skalarprodukt jedes Vektors in zwei Listen von Vektoren
- 15. Boost :: uBLAS vs Eigen
- 16. eine Tridiagonalmatrix Verwendung Eigen-Paket in C++ Solving
- 17. In Eigen C++: komplexe Matrix und reale Matrix mischen
- 18. Eigen initialisieren von Matrix
- 19. Erstellen einer Umformfunktion in Eigen
- 20. Wie colwise Operationen in Eigen
- 21. Wie konvertiert man Eigen :: Matrix4f zu Eigen :: Affine3f
- 22. Eigen: ein Array maskieren
- 23. Wie nutzt OpenCV Eigen?
- 24. Eigen MatrixXd als Rückgabetyp
- 25. Eigen und std :: vector
- 26. Eigen: Effiziente Kronecker Produkt
- 27. MPI_Scatter: Scatter Eigen Matrix
- 28. serialisieren Eigen Matrix mit boost.serialization
- 29. numpy Skalarprodukt aber halten als Vektor (nicht Elemente aufsummieren)
- 30. elegantes Paar weise Skalarprodukt viele Vektoren in numpy
Elementweise multiplizieren, dann summieren? In MATLAB wäre es "sum (A. * B)". Eigen stellt diese Operationen zur Verfügung, aber ich kenne die genauen Namen der Aufrufe nicht. –
nett ein! Das sollte funktionieren. Vielen Dank! – Zedd
Kann eine "Eigen :: Map" verwenden, um die Matrizen in Vektoren umzuformen, und dann ihr inneres Produkt nehmen. – vsoftco