如何使用 Eigen 库实现 max(A),其中 A 是双复数矩阵
How to implement max(A) where A is a double complex matrix using Eigen library
我有一个双精度数据类型的矩阵 A。我能够使用 Eigen 库找到 max(A)。当我通过将绝对值作为比较参数来选择数据类型双复数矩阵时如何修改我的代码。
#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
我需要
max(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;
}
);
我有一个双精度数据类型的矩阵 A。我能够使用 Eigen 库找到 max(A)。当我通过将绝对值作为比较参数来选择数据类型双复数矩阵时如何修改我的代码。
#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
我需要
max(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;
}
);