如何在 Eigen (C++) 中处理复数?
How do I work with complex numbers in Eigen (C++)?
我成功地使用了 Eigen,我正在尝试理解复数的一些细节。
- 如何将矩阵或向量乘以复常量?乘以复杂的矩阵很容易;复杂向量和矩阵的内积也是如此。
- 如何为矩阵元素分配复数值?我试过:
这很好用 (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.
我成功地使用了 Eigen,我正在尝试理解复数的一些细节。
- 如何将矩阵或向量乘以复常量?乘以复杂的矩阵很容易;复杂向量和矩阵的内积也是如此。
- 如何为矩阵元素分配复数值?我试过:
这很好用 (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.