我有一个数据类型为double的矩阵A。我可以用Eigen库找到max(A)。当我选择数据类型为double complex的矩阵时,如何将绝对值作为比较参数来修改我的代码。

#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
}


举个例子


  
    a = [4 + 2 * i,-12-3 * i; 6-1 * i,8 + 1 * i]
  


a =

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


我需要得到


  
    最大(a)
  


ans =

   6.0000 - 1.0000i -12.0000 - 3.0000i

最佳答案

您可以使用redux

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

关于c++ - 如何使用 Eigen 库实现max(A),其中A是双复数矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48273779/

10-09 05:57