2017-06-13 10 views
0

Ich brauche diesen Matlab Betrieb zu reproduzieren:Vektor Multiplikation mit Eigen

r = U(:,ii)'*Es 

Wo: U eine Matrix (komplexe) und Es ist ein Vektor (komplexe)

Am Ende was ich erhalte, ist der skalare komplexe Wert r

Nun, ich versuche, das gleiche mit Eigen-libs in C++ zu tun, habe ich mit diesem tryied:

complex<double> r = U.col(jj) * Es; 

und auch

complex<double> r = U.col(jj).transpose() * Es; 

aber nichts funktioniert. Kann mir jemand helfen? Wie kann ich das gleiche Ergebnis reproduzieren? Vielen Dank!

+0

'U.col (jj) .dot (Es)' oder 'U.col (jj) .conj() Punkt. (Es) '(ich bin nie sicher, was die Konvention von Matlab ist) – chtz

Antwort

0

@chtz, danke. Ich habe Ihre Vorschläge geprüft, und die Operation erforderlich, um die Matlab zu reproduzieren ist:

U.col(jj).dot(Es) 
+1

die folgenden Werke zu:' Komplex r = U.col (jj) .adjoint() * Es; ' – ggael

+0

@ggael Wenn' U.col (jj) .adjoint() * Es funktioniert, warum funktioniert '.transpose() * Es 'nicht? (Es sei denn, JoJo wurde eine sehr alte Version von Eigen mit - ich habe versucht tatsächlich nicht seinen Code ...) – chtz

+1

@chtz '.transpose() * Es' kompiliert und ausgeführt zu fein mit ziemlich alten Version Eigen, also denke ich, dass JoJo wollte sagen, dass das Ergebnis in diesem Fall falsch war. – ggael

Verwandte Themen