.dot() product for VectorXcd in Eigen c++
.dot() product for VectorXcd in Eigen c++
我想弄清楚这是Eigen中的一个bug还是我做错了什么。我只想求两个复向量[1,I]和[1,-i]的点积。答案是1*1 + i*(-i) = 2。但艾根给出的答案是零。参见下面的代码:
#include <iostream>
#include <sstream>
#include <vector>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <map>
#include <sys/sysinfo.h>
#include <algorithm>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main( void ){
VectorXcd xd0(2);
complex<double> c_i( 0.0 , 1.0 );
xd0[0] = 1.0 ;
xd0[1] = c_i;
VectorXcd xd0conj = xd0.conjugate();
cout <<" vec is n" << xd0 <<endl;
cout <<" conj vec is n" << xd0conj <<endl;
cout << "eigen dot = " << (xd0conj).dot(xd0 ) <<endl;
complex<double> outVal = 0.0;
for( int a=0; a<xd0.size(); a++){
outVal += xd0[a]*xd0conj[a];
}
cout << "naive dot = " << outVal<<endl;
};
来自文档:
"如果标量类型是复数,则此函数返回厄米特(半线性)点积,第一个变量为共轭线性,第二个变量为线性。"
这个产物经常被使用,例如在量子力学中。它计算conj(x)*y就是你们看到的。我猜你想要一个简单/普通的点:
cout << "eigen dot = " << xd0conj.transpose()*xd0 <<endl;
这个输出eigen dot = (2,0)
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- Eigen如何在容器循环中干净地附加矩阵
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 使用Pybind11向Python公开Eigen::张量
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- Eigen:调用lpNorm()的正确方法
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- Eigen c++ 三角形来自
- 将数据从 std::vector 复制到 Eigen's MatrixXd in C++
- .dot() product for VectorXcd in Eigen c++
- sparse sparse product A^T*A optim in Eigen lib