discretize_stf
Graph.discretize_stf(stf, duration, segment_count, sample_count_per_segment=1, *, name=None)
Create a piecewise-constant function by discretizing a sampleable function.
Use this function to create a piecewise-constant approximation to a sampleable function (obtained, for example, by filtering an initial piecewise-constant function).
Parameters
- stf (Stf) – The sampleable function v(t) to discretize. The values of the function can have any shape. You can also provide a batch of functions, in which case the discretization is applied to each element of the batch.
- duration (float) – The duration τ over which discretization should be performed. The resulting piecewise-constant function has this duration.
- segment_count (int) – The number of segments N in the resulting piecewise-constant function.
- sample_count_per_segment (int , optional) – The number of samples M of the sampleable function to take when calculating the value of each segment in the discretization. Defaults to 1.
- name (str or None , optional) – The name of the node.
Returns
The piecewise-constant function w(t) obtained by discretizing the sampleable function (or batch of piecewise-constant functions, if you provided a batch of sampleable functions).
Return type
SEE ALSO
Graph.convolve_pwc
: Create an Stf by convolving a Pwc with a kernel.
Graph.filter_and_resample_pwc
: Filter a Pwc with a sinc filter and resample it.
Graph.identity_stf
: Create an Stf representing the identity function.
Graph.sample_stf
: Sample an Stf at given times.
Notes
The resulting function w(t) is piecewise-constant with N segments, meaning it has segment values {wn} such that w(t)=wn for tn−1≤t≤tn, where tn=nτ/N.
Each segment value wn is the average of samples of v(t) at the midpoints of M equally sized subsegments between tn−1 and tn:
wn=M1m=1∑Mv(tn−1+(m−21)MNτ).For more information on Stf nodes see the Working with time-dependent functions in Boulder Opal topic.
Examples
Create discretized Gaussian signal.
>>> times = graph.identity_stf()
>>> gaussian_signal = graph.exp(- (times - 5e-6) ** 2 / 2e-6 ** 2) / 2e-6
>>> discretized_gamma_signal = graph.discretize_stf(
... stf=gaussian_signal, duration=10e-6, segment_count=256, name="gamma"
... )
>>> discretized_gamma_signal
<Pwc: name="gamma", operation_name="discretize_stf", value_shape=(), batch_shape=()>
Refer to the How to create dephasing and amplitude robust single-qubit gates user guide to find the example in context.