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)