Background: I have been working with a system which so far required precise and manual calibration of the input variable $x$ to work and I now want to auto tune it. So I am looking for a normalizing $f$ which when operated on $x$ can be directly fed to the system. With my experience on the system, I have some guidelines that $f$ must adhere to for the system to work properly. I am from electrical background and am aware of only limited number of curves such log, sigmoid, tanh or gamma curves but want to know if any other curve better serves my purpose.
Details: The input to the environment is a variable $x \in (800,10000)$. I want have a normalising function $f: (800,10000) \rightarrow (10,60)$, such that input to my system is $f(x)$ rather than $x$. Please note that this does not mean that 10000 should map to 60. It just means that value should be within this limit. For example if the input range (800,10000) is mapped between (20,30) that is perfectly fine.
I now list 3 guidelines which must be exhibited by $f$. Guidline A) Function must be increasing and continuous like $log(x)$. It should not be piece-wise defined. Guidline B) The function should be a squashing function such that a large change in $x$ should not cause much change in $f(x)$. Basically the variation in $f(x)$ should be much less than the variation caused in $x$. For example if $f(1000)=10$ then $10 < f(3000) < 11$ (output values are just for illustration sake and actual behavior may vary). Guidline C) Squashing should NOT be such that to kill perturbations in $x$, $f(x)$ value is very low. For eaxample $f(800)=2.3$ and $f(2000) = 2.8$ is not acceptable due to low values. However, $f(800)=12.3$ and $f(2000) = 12.9$ is good.
Some solutions:
$log_{2}(x)$ follows A) and C) but does not strictly follow B). Increasing $x$ from $1000$ to $2500$, $log_{2}(x)$ shows little large variation.
$log_{10}(x)$ strictly follows A) and B) but the output values are low around 3. They should have been at least 10. $f(x) = 10 + log_{10}(x)$ satisfies B) and C) but unfortunately the system can't admit a bias term. This because the input $x$ encapsulates the environment. So tomorrow if I shift my system to some other environment, the fixed bias term also needs to be changed which is what I do not want. The way $x$ is calculated is such that if $x$ is low, $f(x)$ should also be low and vice versa. But if I use a bias term, it dictates a minimum value which may not be required by the system. Therefore I prefer a solution that depends on fractions, power, multiplication, gamma curves, log, hyperbolic tan, hyperbola, etc functions that directly depend on input.
$f(x) = [log_e (x^{1/2})]^2$ seems to me a much better option than above two. Another alternative is to use something like $5\times log_e[log_{10}(x)]$ but output value is little low.
I am from an electrical background and do not know of many normalizing curves in mathematics. If there is a continuous, smooth, increasing, non piece-wise, squashing function with output at least 10 for the given range of $x$ without admitting any bias term please let me know.
Thankyou for any solution or input in this regard,
Mohit