Source code for draugr.numpy_utilities.signal_utilities.signal_projection

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = "Christian Heider Nielsen"
__doc__ = r"""

           Created on 17-12-2020
           """

import numpy

__all__ = [
    "normalise_signal",
    "normalise_signal_minmax",
    "normalise_signal_max_abs",
    "heaviside",
]

from draugr.numpy_utilities.signal_utilities.signal_statistics import mean_square


[docs]def normalise_signal_minmax(signal: numpy.ndarray) -> numpy.ndarray: """description""" return numpy.interp(signal, (signal.min(), signal.max()), (-1, 1))
[docs]def normalise_signal_max_abs(signal: numpy.ndarray) -> numpy.ndarray: """description""" return signal / numpy.abs(signal).max()
[docs]def normalise_signal( signal: numpy.ndarray, variance: numpy.ndarray = None ) -> numpy.ndarray: """Normalise power in y to a (standard normal) white noise signal. Optionally normalise to power in signal `x`. The mean power of a Gaussian with `mu=0` and `sigma=1` is 1.""" if variance is not None: variance = mean_square(variance) else: variance = 1.0 return signal * numpy.sqrt(variance / mean_square(signal))
[docs]def heaviside(signal: numpy.ndarray) -> numpy.ndarray: """Heaviside. Returns the value 0 for `x < 0`, 1 for `x > 0`, and 1/2 for `x = 0`.""" return 0.5 * (numpy.sign(signal) + 1)
if __name__ == "__main__": def asiudha() -> None: """ :rtype: None """ a = numpy.random.random(9) - 0.5 print( normalise_signal_minmax(a), "\n", normalise_signal_max_abs(a), "\n", normalise_signal(a), ) print(heaviside(a)) asiudha()