Source code for sweep_design.utility_functions.sweep_correction

from ..signal import Signal
from .emd_analyze import get_IMFs_emd
from .a_t import tukey_a_t


[docs]def correct_sweep(signal: Signal, start_window: float = None) -> Signal: '''Apply correction to sweep signal. Using the EMD to subtract the last IMF from the displacement and if window is not None then apply a window in the star so that the displacement starts at zero. Args: signal (Relation): The sweep signal on which the correction will be applied. start_window (float, optional): The time interval at the beginning to reduce the deviation from zero. If None, then window is not applied. Defaults to None. Returns: Relation: corrected sweep signal. ''' displacement = signal.integrate().integrate() x = displacement.x.array IMFs = get_IMFs_emd(displacement) if start_window is not None: window = tukey_a_t(x, start_window, "left") new_displacement = IMFs[0] * Signal(x, window) else: new_displacement = IMFs[0] signal = new_displacement.diff().diff() return signal