Mathematical Functions#

Negation#

You can negate each signal sample with the '-' operator or by calling the method neg().

A new Trace instance labeled with the performed transformation 'neg' is returned.

>>> # negate samples with operator
>>> -Trace('Signal', [-1, 0, 1])
Trace(label='Signal:neg', samples=[1, 0, -1])
>>> # negate samples with method call
>>> Trace('Signal', [-1, 0, 1]).neg()
Trace(label='Signal:neg', samples=[1, 0, -1])

(Source code, html)

Absolute#

You can compute the absolute value for each signal sample with the built-in function abs() or by calling the method abs().

A new Trace instance labeled with the performed transformation 'abs' is returned.

>>> abs(Trace('Signal', [-1, 0, 1]))
Trace(label='Signal:abs', samples=[1, 0, 1])
>>> Trace('Signal', [-1, 0, 1]).abs()
Trace(label='Signal:abs', samples=[1, 0, 1])

(Source code, html)

Rounding#

You can round each signal sample with the built-in function round() or by calling the method round().

A new Trace instance labeled with the performed transformation 'round' is returned.

>>> round(Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]))
Trace(label='Signal:round', samples=[-2, 0, 0, 0, 2])
>>> Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]).round()
Trace(label='Signal:round', samples=[-2, 0, 0, 0, 2])

(Source code, html)

Truncation#

You can truncate each signal sample with the function trunc() from the math module or by calling the method trunc().

A new Trace instance labeled with the performed transformation 'trunc' is returned.

>>> import math
>>> math.trunc(Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]))
Trace(label='Signal:trunc', samples=[-1, 0, 0, 0, 1])
>>> Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]).trunc()
Trace(label='Signal:trunc', samples=[-1, 0, 0, 0, 1])

(Source code, html)

Round to the Floor#

You can round each signal sample to its floor integer with the function floor() from the math module or by calling the method floor().

A new Trace instance labeled with the performed transformation 'floor' is returned.

>>> import math
>>> math.floor(Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]))
Trace(label='Signal:floor', samples=[-2, -1, 0, 0, 1])
>>> Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]).floor()
Trace(label='Signal:floor', samples=[-2, -1, 0, 0, 1])

(Source code, html)

Round to the Ceil#

You can round each signal sample to its ceil integer with the function ceil() from the math module or by calling the method ceil().

A new Trace instance labeled with the performed transformation 'ceil' is returned.

>>> import math
>>> math.ceil(Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]))
Trace(label='Signal:ceil', samples=[-1, 0, 0, 1, 2])
>>> Trace('Signal', [-1.5, -0.5, 0, 0.5, 1.5]).ceil()
Trace(label='Signal:ceil', samples=[-1, 0, 0, 1, 2])

(Source code, html)

Signum#

You can compute the signum value for each signal sample by calling the method sign().

A new Trace instance labeled with the performed transformation 'sign' is returned.

>>> Trace('Signal', [-1.5, -0.5, 0 , 0.5, 1.5]).sign()
Trace(label='Signal:sign', samples=[-1.0, -1.0, 0, 1.0, 1.0])

(Source code, html)

Zeros#

You can check each signal sample is zero or not by calling the method zero().

A new Trace instance labeled with the performed transformation 'zero' is returned.

>>> Trace('Signal', [-0.5, -0.0, 0, +0.0, 0.5]).zero()
Trace(label='Signal:zero', samples=[0, 1, 1, 1, 0])

(Source code, html)

Positives#

You can check each signal sample is positive or not by calling the method positive().

A new Trace instance labeled with the performed transformation 'positive' is returned.

>>> Trace('Signal', [-0.5, -0.0, 0, +0.0, 0.5]).positive()
Trace(label='Signal:positive', samples=[0, 0, 0, 0, 1])

(Source code, html)

Negatives#

You can check each signal sample is negative or not by calling the method negative().

A new Trace instance labeled with the performed transformation 'negative' is returned.

>>> Trace('Signal', [-0.5, -0.0, 0, +0.0, 0.5]).negative()
Trace(label='Signal:negative', samples=[1, 0, 0, 0, 0])

(Source code, html)

Min#

You can get the minimum of each signal sample and the corresponding element in other Trace’s or Iterables, or an int or float numbers by calling the method min().

A new Trace instance labeled with the performed transformation 'min' is returned.

>>> # minimum of samples
>>> Trace('Signal1', [1, -2, 3]).min(Trace('Signal2', [-1, 2, -3]))
Trace(label='Signal1:min', samples=[-1, -2, -3])
>>> # minimum of samples and iterables
>>> Trace('Signal', [1, -2, 3]).min([-1, 2, -3])
Trace(label='Signal:min', samples=[-1, -2, -3])
>>> # minimum of samples and numbers
>>> Trace('Signal', [1, 2, 3]).min(2)
Trace(label='Signal:min', samples=[1, 2, 2])

Note

An iterable should have at least the same length as the signal samples, otherwise only a subset of the signal samples is returned!

(Source code, html)

Max#

You can get the maximum of each signal sample and the corresponding element in other Trace’s or Iterables, or an int or float numbers by calling the method max().

A new Trace instance labeled with the performed transformation 'max' is returned.

>>> # maximum of samples
>>> Trace('Signal1', [1, -2, 3]).max(Trace('Signal2', [-1, 2, -3]))
Trace(label='Signal1:max', samples=[1, 2, 3])
>>> # maximum of samples and iterables
>>> Trace('Signal', [1, -2, 3]).max([-1, 2, -3])
Trace(label='Signal:max', samples=[1, 2, 3])
>>> # maximum of samples and numbers
>>> Trace('Signal', [1, 2, 3]).max(2)
Trace(label='Signal:max', samples=[2, 2, 3])

Note

An iterable should have at least the same length as the signal samples, otherwise only a subset of the signal samples is returned!

(Source code, html)

Average#

You can get the average of each signal sample and the corresponding element in other Trace’s or Iterables, or an int or float numbers by calling the method average().

A new Trace instance labeled with the performed transformation 'avg' is returned.

>>> # average of samples
>>> Trace('Signal1', [1, -2, 3]).average(Trace('Signal2', [-1, 2, -3]))
Trace(label='Signal1:avg', samples=[0.0, 0.0, 0.0])
>>> # average of samples and iterables
>>> Trace('Signal', [1, -2, 3]).average([-1, 2, -3])
Trace(label='Signal:avg', samples=[0.0, 0.0, 0.0])
>>> # average of samples and numbers
>>> Trace('Signal', [1, -2, 3]).average(2)
Trace(label='Signal:avg', samples=[1.5, 0.0, 2.5])

Note

An iterable should have at least the same length as the signal samples, otherwise only a subset of the signal samples is returned!

(Source code, html)

Interpolate#

You can piecewise linear interpolate the signal samples between consecutive data points by calling the method interpolate().

A new Trace instance labeled with the performed transformation 'interpolate' is returned.

>>> # interpolate linear the samples within the sorted data points
>>> Trace('Signal', [-1.5, -1.0, -0.5, 0 , 0.5, 1.0, 1.5]).interpolate(
...       x=[1, -0.5, -1, 0.5], y=[ -1, 0, 1, 0])
Trace(label='Signal:interpolate',
      samples=[1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0])

Note

The data points are sorted internally by their x-coordinates to be in ascending order.

(Source code, html)