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

时间:2018-04-20 22:59:33

标签: c++ visual-studio eigen

我成功地与Eigen合作,我试图了解复杂数字的一些细节。

  1. 如何将矩阵或向量乘以复数常量?与复杂矩阵相乘很容易;同样具有复杂载体和基质的内积。
  2. 如何为矩阵元素指定复杂值?我试过了:
  3. 这很好用(Visual Studio)

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

    这会抛出编译器错误

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

    我得到的错误是:

      

    严重级代码描述项目文件行抑制状态   错误C2440'返回':无法转换为' double'到' double&' \ eigen \ src \ core \ mathfunctions.h 919

1 个答案:

答案 0 :(得分:3)

只需使用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.