2017-06-13 98 views
0

我需要重现此Matlab的操作:矢量乘以本征

r = U(:,ii)'*Es 

其中: U是(复杂)的矩阵和Es是(复杂)

最终的载体,我所得到的是标量复值r

现在,我试图做与C++库的本征同样的,我已经tryied这个:

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

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

,但没有任何工程。有谁能够帮助我?我怎样才能重现相同的结果? 谢谢!

+0

'U.col(JJ).DOT(ES)'或'U.col(JJ).conj()点。 (Es)'(我不确定Matlab惯例是什么) – chtz

回答

0

@chtz,谢谢。我测试过你的建议,并重现MATLAB所需的操作是:

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

以下工作也是如此:'复杂 r = U.col(jj).adjoint()* Es;' – ggael

+0

@ggael如果'U.col (jj).adjoint()* Es'工作,为什么'.transpose()* Es'工作? (除非JoJo使用的是Eigen的老版本 - 我其实没有尝试他的代码......) – chtz

+1

@chtz'.transpose()* Es'编译并且运行良好,它的版本也很老,所以我猜JoJo的意思是说在这种情况下结果是不正确的。 – ggael