Graph.pwc_signal(values, duration, *, name=None)

Create a piecewise-constant signal (scalar-valued function of time).

Use this function to create a piecewise-constant signal in which the constant segments all have the same duration.

  • values (np.ndarray or Tensor) – The values \(\{\alpha_n\}\) of the \(N\) constant segments. These can represent either a single sequence of segment values or a batch of them. To create a batch of \(B_1 \times \ldots \times B_n\) signals, represent these values as a tensor of shape \(B_1 \times \ldots \times B_n \times N\).

  • duration (float) – The total duration \(\tau\) of the signal.

  • name (str or None, optional) – The name of the node.


The piecewise-constant function of time \(\alpha(t)\), satisfying \(\alpha(t)=\alpha_n\) for \(t_{n-1}\leq t\leq t_n\), where \(t_n=n\tau/N\) (where \(N\) is the number of values in \(\{\alpha_n\}\)). If you provide a batch of values, the returned Pwc represents a corresponding batch of \(B_1 \times \ldots \times B_n\) functions \(\alpha(t)\).

Return type:


See also


Create complex Pwc signals from their moduli and phases.

Corresponding operation with support for segments of different durations.


Create Pwc operators.


Sum multiple Pwcs.


Symmetrize Pwcs.


For more information on Pwc nodes see the Working with time-dependent functions in Boulder Opal topic.


Create a piecewise-constant signal with uniform segment duration.

>>> graph.pwc_signal(duration=0.1, values=np.array([2, 3]), name="signal")
<Pwc: name="signal", operation_name="pwc_signal", value_shape=(), batch_shape=()>
>>> result = bo.execute_graph(graph=graph, output_node_names="signal")
>>> result["output"]["signal"]
    'durations': array([0.05, 0.05]),
    'values': array([2., 3.]),
    'time_dimension': 0

See more examples in the Get familiar with graphs tutorial.