例如,以下代码生成复数矩阵,虚部等于0
#include <Eigen/Dense>
#include <iostream>
using namespace std;
using namespace Eigen;
int main()
{
MatrixXcf m(2,2);
m<<1,2,3,4;
cout<<m<<endl;
}
输出
(1,0) (2,0)
(3,0) (4,0)
但是如何用非零虚部手动输入任意复数矩阵?
答案 0 :(得分:2)
由于MatrixXcf
只是元素类型为std::complex<float>
的矩阵的别名,因此您可以提供该类型的任意初始值设定项。在C ++ 14中,您可以使用方便的用户定义文字i
,if
,il
来创建各种浮点类型的虚构单位。以下是有效的:
#include <Eigen/Dense>
#include <complex>
#include <iostream>
using namespace std::literals;
int main()
{
Eigen::MatrixXcf m(2,2);
m << 1.0f + 2.0if, 2.0f + 1.0if, 3.0f - 1.0if, 4.0f - 2.0if;
std::cout << m << std::endl;
}
如果你没有文字,你可以自己制作并繁殖:
const std::complex<float> If(0.0f, 1.0f); // use x * I etc
即。上面的代码变成了:
m << 1.0f + 2.0f * If, 2.0f + 1.0 * If, 3.0f - 1.0 * If, 4.0f - 2.0 * If;
您必须注意为所有文字提供正确的类型,否则操作符重载将无效。