对数指数变换

源范围【minX,maxX】到目标范围【minY,maxY】的指数变换;

double AbstractCalculator::expConvert(double x, double base, double minX, double maxX, double minY, double maxY)

{
    double factor = (maxY - minY) / (log(maxX + base) - log(minX + base));
    return (exp((x + factor * log(minX + base) - minY) / factor) - base);
}


源范围【minX,maxX】到目标范围【minY,maxY】的对数变换;变换效果为:两端向中间靠近;

double AbstractCalculator::logConvert(double x, double base, double minX, double maxX, double minY, double maxY)
{
    double factor = (maxY - minY) / (log(maxX + base) - log(minX + base));
    return (factor * (log(x + base) - log(minX + base)) + minY);
}

猜你喜欢

转载自blog.csdn.net/calm_agan/article/details/72568666