C++ 如何利用特征库实现max(A),其中A是双复矩阵

C++ 如何利用特征库实现max(A),其中A是双复矩阵,c++,matlab,matrix,eigen,C++,Matlab,Matrix,Eigen,我有一个数据类型为double的矩阵。我可以通过特征库找到maxA。当我选择一个数据类型为双复数的矩阵时,如何以绝对值作为比较参数来修改我的代码 #include <iostream> #include <eigen3/Eigen/Dense> #include <complex.h> using namespace Eigen; int main() { MatrixXcd A(2, 2), B(1,2); A<<-4,-12,

我有一个数据类型为double的矩阵。我可以通过特征库找到maxA。当我选择一个数据类型为双复数的矩阵时,如何以绝对值作为比较参数来修改我的代码

#include <iostream>
#include <eigen3/Eigen/Dense>
#include <complex.h>
using namespace Eigen;


int main()

{

    MatrixXcd A(2, 2), B(1,2);
A<<-4,-12,
    6,8;
B=A.colwise().maxCoeff();
cout<<"The solution is A:\n"<<B<<endl;
retun 0
}
我需要去

马克萨

您可以使用:


哪个数字大?1+2i或2+i?你不能比较两个复数,你只能比较它们的模。在Eigen中,absx1>absx2的相等命令是什么。所以,您已经知道了。阅读你自己的问题。它提到了模量吗?你为什么不在问题中清楚地说明你想要什么?编辑你的问题并清楚地陈述,否则会被认为不合逻辑而不予考虑。在打印B时,它会给出绝对值。我需要打印具有最大绝对值的矩阵A的元素,应该做什么更改,以便在比较绝对值之后,我得到相应的实值和虚值??
a =

   4.0000 + 2.0000i -12.0000 - 3.0000i
   6.0000 - 1.0000i   8.0000 + 1.0000i
ans =

   6.0000 - 1.0000i -12.0000 - 3.0000i
B = A.colwise().redux(
    [](const auto& a,const auto&  b) {
        if(std::abs(a) < std::abs(b))
            return b;
        return a;
    }
);