tanh_ramp
The Boulder Opal Toolkits are currently in beta phase of development. Breaking changes may be introduced.
- tanh_ramp(duration, end_value, start_value=None, ramp_duration=None, center_time=None)
Create a Signal object representing a hyperbolic tangent ramp.
- Parameters:
duration (float) – The duration of the signal, \(T\).
end_value (float or complex) – The asymptotic value of the ramp towards \(t \to +\infty\), \(a_+\).
start_value (float or complex, optional) – The asymptotic value of the ramp towards \(t \to -\infty\), \(a_-\). Defaults to minus end_value.
ramp_duration (float, optional) – The characteristic time for the hyperbolic tangent ramp, \(t_\mathrm{ramp}\). Defaults to \(T/6\).
center_time (float, optional) – The time at which the ramp has its greatest slope, \(t_0\). Defaults to \(T/2\).
- Returns:
The hyperbolic tangent ramp.
- Return type:
See also
signals.linear_ramp()
Create a Signal object representing a linear ramp.
signals.tanh_ramp_pwc()
Graph operation to create a Pwc representing a hyperbolic tangent ramp.
signals.tanh_ramp_stf()
Graph operation to create a Stf representing a hyperbolic tangent ramp.
Notes
The hyperbolic tangent ramp is defined as
\[\mathop{\mathrm{Tanh}}(t) = \frac{a_+ + a_-}{2} + \frac{a_+ - a_-}{2} \tanh\left( \frac{t - t_0}{t_\mathrm{ramp}} \right) ,\]where the function’s asymptotic values \(a_\pm\) are defined by:
\[a_\pm := \lim_{t\to\pm\infty} \mathop{\mathrm{Tanh}}(t) ,\]and \(t_0\) is related to \(t_\mathrm{ramp}\) by:
\[\left.\frac{{\rm d}\mathop{\mathrm{Tanh}}(t)}{{\rm d}t}\right|_{t=t_0} = \frac{ (a_+ - a_-)}{2 t_\mathrm{ramp}} .\]Note that if \(t_0\) is close to the edges of the ramp, for example \(t_0 \lesssim 2 t_\mathrm{ramp}\), then the first and last values of the outputted array will differ from the expected asymptotic values.
With the default values of start_value (\(a_-\)), ramp_duration (\(t_\mathrm{ramp}\)), and center_time (\(t_0\)), the ramp expression simplifies to
\[\mathop{\mathrm{Tanh}}(t) = A \tanh\left( \frac{t - T/2}{T/6} \right),\]where \(A = a_+\) is the end value (the start value is then \(-A\)). This defines a symmetric ramp (around \((T/2, 0)\)) between \(-0.995 A\) (at \(t=0\)) and \(0.995 A\) (at \(t=T\)).
Examples
Define a tanh ramp.
>>> signal = qctrl.signals.tanh_ramp( ... duration=4, end_value=2, start_value=1, ramp_duration=0.4, center_time=2. ... ) >>> signal.export_with_time_step(time_step=0.4) array([1.00012339, 1.00091105, 1.00669285, 1.04742587, 1.26894142, 1.73105858, 1.95257413, 1.99330715, 1.99908895, 1.99987661])