Graph.pwc_sum(terms, *, name=None)

Create the sum of multiple piecewise-constant terms.

  • terms (list[Pwc]) – The individual piecewise-constant terms \(\{v_j(t)\}\) to sum. All terms must have the same duration, values of the same shape, and the same batch shape, but may have different segmentations (different numbers of segments of different durations) and different dtypes of segment values.

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


The piecewise-constant function (or batch of functions) of time \(\sum_j v_j(t)\). Its values have the same shape as the values of each of the terms that you provided. If each of the terms represents a batch of functions, this result represents a batch of functions with the same batch shape. If any term has complex-valued segments, the value of the returned Pwc is complex, otherwise is float.

Return type


See also


Discretize an Stf into a Pwc.


Create piecewise-constant functions.


Create Pwc operators.


Create Pwc signals from (possibly complex) values.


Corresponding operation for Stfs.


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


Sum a list of piecewise-constant terms of different durations.

>>> x =[0.1, 0.3]), values=np.array([1, 2]))
>>> y =[0.2, 0.2]), values=np.array([3, 1]))
>>> graph.pwc_sum([x, y], name="sum")
<Pwc: name="sum", operation_name="pwc_sum", value_shape=(), batch_shape=()>
>>> result = qctrl.functions.calculate_graph(graph=graph, output_node_names=["sum"])
>>> result.output["sum"]
    {"value": 4.0, "duration": 0.1},
    {"value": 5.0, "duration": 0.1},
    {"value": 3.0, "duration": 0.2},

See more examples in the How to optimize controls robust to strong noise sources user guide.