static OperationNamespace.discretize_stf(stf, duration, segments_count, samples_per_segment=1, *, name=None)

Creates 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).

  • 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 \(\tau\) over which discretization should be performed. The resulting piecewise-constant function has this duration.

  • segments_count (int) – The number of segments \(N\) in the resulting piecewise-constant function.

  • samples_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, optional) – The name of the node.


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



The resulting function \(w(t)\) is piecewise-constant with \(N\) segments, meaning it has segment values \(\{w_n\}\) such that \(w(t)=w_n\) for \(t_{n-1}\leq t\leq t_n\), where \(t_n= n \tau/N\).

Each segment value \(w_n\) is the average of samples of \(v(t)\) at the midpoints of \(M\) equally sized subsegments between \(t_{n-1}\) and \(t_n\):

\[w_n = \frac{1}{M} \sum_{m=1}^M v\left(t_{n-1} + \left(m-\tfrac{1}{2}\right) \frac{\tau}{MN} \right).\]