# gaussian_pulse

The Boulder Opal Toolkits are currently in beta phase of development. Breaking changes may be introduced.

gaussian_pulse(duration, amplitude, width=None, center_time=None, drag=0.0, flat_duration=0.0)

Create a Signal object representing a Gaussian pulse.

Parameters:
• duration (float) – The duration of the signal, $$T$$.

• amplitude (float or complex) – The amplitude of the Gaussian pulse, $$A$$.

• width (float, optional) – The standard deviation of the Gaussian pulse, $$\sigma$$. Defaults to $$T/10$$ or $$(T-t_\mathrm{flat})/10$$ if flat_duration is passed.

• center_time (float, optional) – The center of the Gaussian pulse, $$t_0$$. Defaults to half of the given value of the duration, $$T/2$$.

• drag (float, optional) – The DRAG parameter, $$\beta$$. Defaults to 0, in which case there is no DRAG correction.

• flat_duration (float, optional) – The amount of time to remain constant after the peak of the Gaussian, $$t_\mathrm{flat}$$. If passed, it must be nonnegative and less than the duration. Defaults to 0, in which case no constant part is added to the Gaussian pulse.

Returns:

The Gaussian pulse.

Return type:

Signal

signals.cosine_pulse()

Create a Signal object representing a cosine pulse.

signals.gaussian_pulse_pwc()

Graph operation to create a Pwc representing a Gaussian pulse.

signals.gaussian_pulse_stf()

Graph operation to create a Stf representing a Gaussian pulse.

signals.sech_pulse()

Create a Signal object representing a hyperbolic secant pulse.

signals.square_pulse()

Create a Signal object representing a square pulse.

Notes

The Gaussian pulse is defined as

$\begin{split}\mathop{\mathrm{Gaussian}}(t) = \begin{cases} A \left(1-\frac{i\beta (t-t_1)}{\sigma^2}\right) \exp \left(- \frac{(t-t_1)^2}{2\sigma^2} \right) &\mathrm{if} \quad t < t_1=t_0- t_\mathrm{flat}/2\\ A &\mathrm{if} \quad t_0-t_\mathrm{flat}/2 \le t < t_0+t_\mathrm{flat}/2 \\ A \left(1-\frac{i\beta (t-t_2)}{\sigma^2}\right) \exp \left(- \frac{(t-t_2)^2}{2\sigma^2} \right) &\mathrm{if} \quad t > t_2=t_0+t_\mathrm{flat}/2 \end{cases} .\end{split}$

If the flat duration is zero (the default setting), this reduces to

$\mathop{\mathrm{Gaussian}}(t) = A \left(1-\frac{i\beta (t-t_0)}{\sigma^2}\right) \exp \left(- \frac{(t-t_0)^2}{2\sigma^2} \right) .$

Examples

Define a Gaussian pulse.

>>> pulse = qctrl.signals.gaussian_pulse(duration=2.0, amplitude=1.0)
>>> pulse.export_with_time_step(time_step=0.2)
array([4.00652974e-05+0.j, 2.18749112e-03+0.j, 4.39369336e-02+0.j,
3.24652467e-01+0.j, 8.82496903e-01+0.j, 8.82496903e-01+0.j,
3.24652467e-01+0.j, 4.39369336e-02+0.j, 2.18749112e-03+0.j,
4.00652974e-05+0.j])


Define a flat-top Gaussian pulse with a DRAG correction.

>>> pulse = qctrl.signals.gaussian_pulse(
...     duration=1.0,
...     amplitude=1.0,
...     width=0.2,
...     center_time=0.6,
...     drag=0.1,
...     flat_duration=0.2,
... )
>>> pulse.export_with_sampling_rate(sampling_rate=10.)
array([0.07955951+0.08950445j, 0.21626517+0.18923202j,
0.45783336+0.28614585j, 0.7548396 +0.28306485j,
0.96923323+0.12115415j, 1.        +0.j        ,
1.        +0.j        , 0.96923323-0.12115415j,
0.7548396 -0.28306485j, 0.45783336-0.28614585j])