复数:
需要包含头文件:
#include<complex>
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;
定义一个复数矩阵文章来源:https://www.toymoban.com/news/detail-609987.html
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()函数。
矩阵可以使用=来实现拷贝,如果左边是动态矩阵,那么左侧矩阵的大小将和右侧的保持一致。
更多地可以查看官方手册!!文章来源地址https://www.toymoban.com/news/detail-609987.html
到了这里,关于如何在C++中实现复数矩阵运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!