如何在 Eigen (C++) 中处理复数?

How do I work with complex numbers in Eigen (C++)?

我成功地使用了 Eigen,我正在尝试理解复数的一些细节。

  1. 如何将矩阵或向量乘以复常量?乘以复杂的矩阵很容易;复杂向量和矩阵的内积也是如此。
  2. 如何为矩阵元素分配复数值?我试过:

这很好用 (Visual Studio)

kx.real()(0, 0) = 1.0;

这会引发编译器错误

kz_r.imag()(0, ii) =1.0

我得到的错误是:

Severity Code Description Project File Line Suppression State Error C2440 'return': cannot convert from 'double' to 'double &' \eigen\src\core\mathfunctions.h 919

只需使用std::complex<double>(或float):

std::complex<double> c(1,1);
Eigen::MatrixXd R1; R1.setRandom(2,2);
Eigen::MatrixXcd C1 = c*R1; // multiply complex*real
Eigen::MatrixXcd C2 = c*C1; // complex scalar times complex matrix
C1(0,0) = c; // assign complex value.