get_time_response¶
- qugradlab.pulses.filtering.get_time_response(sample_times: ndarray[float64], low_pass_time_constant: float, high_pass_time_constant: float, low_pass_order: int, mononomial_order: int, high_pass_order: int) ndarray[float64][source]¶
Generates the response of the transfer function
\[ T(\omega)= \frac{(i\omega\tau')^m}{(1+i\omega\tau)^n}. \]to a Heaviside step function multiplied by a mononomial of order mononomial_order
\[\begin{split} g\left(t\right)=\tau^{-n}\tau'^{m}\Theta\left(t\right) \frac{\Gamma\left(j+1\right)t^{n-m+j}}{\Gamma\left(n-m+j+1\right)} {_1F_1}\left[\begin{matrix} n\\ n-m+j+1 \end{matrix}\:; -t\tau^{-1}\right]. \end{split}\]where \(\tau\) corresponds to low_pass_time_constant, \(\tau'\) corresponds to high_pass_time_constant, \(m\) corresponds to high_pass_order, \(n\) corresponds to low_pass_order, \(j\) corresponds to mononomial_order, \(\Theta\) is the Heaviside step function, \(\Gamma\) is the Gamma function, and \({_1F_1}\) is the confluent hypergeometric function.
- Parameters:
sample_times (NDArray[Shape[n_samples], np.float64]) – The times at which the response function is evaluated.
low_pass_time_constant (float) – The time constant of the low pass type filter. To apply a pure low pass filter set
high_pass_order_constant = 0.high_pass_time_constant (float) – The time constant of the high pass type filter. To apply a pure high pass filter high_pass_time_constant should equal
low_pass_time_constant.low_pass_order (int) – The order of the low pass type filter. To apply a pure low pass filter set
high_pass_order = 0.mononomial_order (NDArray[Shape[n_orders], int]) – The order of the mononomial. 0 corresponds constant, 1 linear, etc.
high_pass_order (int) – The order of the high pass type filter. To apply a pure high pass filter
high_pass_time_constantshould equallow_pass_time_constantandhigh_pass_ordershould equallow_pass_order.
- Returns:
The response function evaluated at
sample_times.- Return type:
NDArray[Shape[n_orders, n_samples], np.float64]