如何在C++中实现复数矩阵运算

复数:
需要包含头文件:

#include
complex<Variable_Type>Typename;//复数模板类

两种赋值方法

	complex<double> t11;
    t11.real(1.383);
    t11.imag(-3.83);
    complex<double>t22(3.54, 2.947)

矩阵:
VS2019需要自己安装Eigen库:(41条消息) 基于VS2019的Eigen库安装详解_人狮子的博客-CSDN博客_eigen库安装vs
使用Eigen库
Eigen::Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ >
可以看到Matrix这个类有六个参数,下面是六个参数的具体解释
Scalar_:类型参数,默认的参数类型(float,int,double)等等都是可以用的,复杂地,可以参考官网的Using custom scalar types
Rows_:行数
Cols_:列数
行数和列数可以设置为静态,即在编译的时候就确定大小。同样地,也可以选择设置为Dynamic,可以在运行的时候才确定大小。
Opitions:存储方式,存储方式分为column-major and row-major.因为在计算机内存存放二维的数据类型都是线性内存的,参考二维数组的存放方式。默认的存储方式是column-major,按照默认列存储的方式存储,其效率会更高。
MaxRows_设置最大行数,默认为Rows_的值
MaxCols_设置最大列数,默认为Cols_的值,这两个参数一般默认就行
因为Matrix类设置起来太麻烦了,官方自己设置一些typedefs,具体的可以看官网Global matrix typedefs
下面是我自己typedef的一些矩阵类型

typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> mat_d;
typedef Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> mat_i;
typedef Eigen::Matrix<std::complex<int>, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> mat_complex_i;
typedef Eigen::Matrix<std::complex<double>, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> mat_complex_d;

定义一个复数矩阵

void GetComplexMatrix()
{
    complex<double> t11;
    t11.real(1.383);
    t11.imag(-3.83);
    complex<double>t22(3.54, 2.947), 
        t33(-2.763, 3.178), t44(-5.3080, 1.65);//创建四个复数
    mat_complex_d mat2(2, 2);
    mat2 << t11, t22, t33, t44;
}

Matrix的一些成员函数的讲解
矩阵的大小可以用size()来获取,行数用rows()来获取,列数用cols()来获取
动态矩阵可以重新设置矩阵的大小(静态矩阵不行):使用resize()函数。
矩阵可以使用=来实现拷贝,如果左边是动态矩阵,那么左侧矩阵的大小将和右侧的保持一致。
更多地可以查看官方手册!!

你可能感兴趣的:(c++,矩阵,开发语言)