计算特征::矩阵符号()的最佳方法 因为本征C++库不包含计算矩阵的符号(x)< /代码>的内置方法,所以我在寻找最佳的方法。有关sign()的定义,请参见,尽管我并不需要0元素的大小写。我想出的方法如下 Eigen::MatrixXf a=Eigen::MatrixXf(2,2); a=0)。选择(正、负); std::cout

计算特征::矩阵符号()的最佳方法 因为本征C++库不包含计算矩阵的符号(x)< /代码>的内置方法,所以我在寻找最佳的方法。有关sign()的定义,请参见,尽管我并不需要0元素的大小写。我想出的方法如下 Eigen::MatrixXf a=Eigen::MatrixXf(2,2); a=0)。选择(正、负); std::cout,c++,math,matrix,eigen,C++,Math,Matrix,Eigen,如何unaryExpr double sign_func(double x) { if (x > 0) return +1.0; else if (x == 0) return 0.0 else return -1.0; } int main() { Eigen::MatrixXf a = Eigen::MatrixXf(2,2); a << -0.5, 1.0,

如何
unaryExpr

double sign_func(double x)
{
    if (x > 0)
        return +1.0;
    else if (x == 0)
        return 0.0
    else
        return -1.0;
}

int main()
{
     Eigen::MatrixXf a = Eigen::MatrixXf(2,2);
     a << -0.5, 1.0,
           0.3, -1.4;
     std::cout << a.unaryExpr(std::ptr_fun(sign_func)) << std::endl;
     return 0;
}
双符号函数(双x)
{
如果(x>0)
回报率+1.0;
else如果(x==0)
返回0.0
其他的
回报率-1.0;
}
int main()
{
本征::矩阵xxf a=本征::矩阵xxf(2,2);

aunaryExpr
怎么样

double sign_func(double x)
{
    if (x > 0)
        return +1.0;
    else if (x == 0)
        return 0.0
    else
        return -1.0;
}

int main()
{
     Eigen::MatrixXf a = Eigen::MatrixXf(2,2);
     a << -0.5, 1.0,
           0.3, -1.4;
     std::cout << a.unaryExpr(std::ptr_fun(sign_func)) << std::endl;
     return 0;
}
双符号函数(双x)
{
如果(x>0)
回报率+1.0;
else如果(x==0)
返回0.0
其他的
回报率-1.0;
}
int main()
{
本征::矩阵xxf a=本征::矩阵xxf(2,2);
a怎么样

 X = X.array().sign();
怎么样

 X = X.array().sign();

有什么问题吗?没有这样的函数可用(Egeng 3.2.6)。不管怎样,它看起来是在2015年11月25日添加的,那么呢。
Egeng::MatrixXi a_sign=a.unaryExpr([](float in){return in有什么问题?没有这样的函数可用(Egeng 3.2.6)好吧,看起来它是在2015年11月25日添加的,不管怎样,那么呢。
Eigen::MatrixXi a_sign=a.unaryExpr([](float in){return in