pysdkit.hvd#
Created on 2025/02/06 00:19:17 @author: Whenxuan Wang @email: wwhenxuan@gmail.com
Created on 2025/02/06 00:19:23 @author: Whenxuan Wang @email: wwhenxuan@gmail.com |
hvd.hvd#
Created on 2025/02/06 00:19:23 @author: Whenxuan Wang @email: wwhenxuan@gmail.com
- class pysdkit._hvd.hvd.HVD(K: int = 3, fpar: int | None = 20, mirror: bool | None = True)[source]#
Bases:
objectHilbert Vibration Decomposition
The Hilbert Vibration Decomposition is an adaptive/data-driven separation of a multi-component non-stationary vibration signal into simple quasi-harmonic components. The method is characterized by high frequency and amplitude resolution, which provides a comprehensive account of the case of amplitude and frequency modulated vibration analysis. The HVD is a simple and fast recursive vibration mode decomposition, that sifts out a 1D input signal into a set of k-band separated simplest components with their envelopes and instantaneous frequencies. The HVD decomposes composition as a vector and returns a matrix of inherent components as the Hilbert spectrum plus residual signal.
Feldman, Michael. “Time-varying vibration decomposition and analysis based on the Hilbert transform.” Journal of Sound and Vibration 295.3-5 (2006): 518-530.
Ramos, J. J., J. I. Reyes, and E. Barocio. “An improved Hilbert Vibration Decomposition method for analysis of low frequency oscillations.” 2014 IEEE PES Transmission & Distribution Conference and Exposition-Latin America (PES T&D-LA). IEEE, 2014.
Python code: MVRonkin/dsatools
MATLAB code: https://www.mathworks.com/matlabcentral/fileexchange/178804-hilbert-vibration-decomposition?s_tid=FX_rc1_behav
The original code has a serious endpoint problem. The algorithm provided cannot handle the signal decomposition near the endpoint well. Therefore, we have improved it by mirroring the input signal to alleviate this problem. It can work only with narrowband signals!
- __call__(signal: ndarray, return_all: bool | None = False) Tuple[ndarray, ndarray] | ndarray[source]#
allow instances to be called like functions
- __init__(K: int = 3, fpar: int | None = 20, mirror: bool | None = True) None[source]#
Create the Hilbert Vibration Decomposition instance
Decomposition results are very depends on the fpar value We have improved the original code by mirroring the input signal to alleviate this problem.
- Parameters:
K – the number of intrinsic mode functions to be decomposed
fpar – filter parameter, equal to point of cut frequency for low-pass filter (have to be regulized for optimal decomposition).
mirror – whether to mirror the original input signal
- __module__ = 'pysdkit._hvd.hvd'#
- __weakref__#
list of weak references to the object (if defined)
- fit_transform(signal: ndarray, return_all: bool | None = False) Tuple[ndarray, ndarray] | ndarray[source]#
Start executing the Hilbert Vibration Decomposition algorithm.
- square_window(seq_len: int, w_filt: Tuple[int, int] | None = None, real_valued_filter: bool = True) ndarray[source]#
Square window in range 0:fs//2. It is mainly used to specify a frequency band range in the frequency domain, where the frequency components within this range are retained, while those outside the range are suppressed.
- Parameters:
seq_len – filter length
w_filt – cut-off low and high points
real_valued_filter – whether to make the window a real-valued filter
- Returns:
the square window