add function to get phase sifts
This commit is contained in:
parent
521912edf5
commit
489c255abd
2 changed files with 20 additions and 5 deletions
|
|
@ -1 +1 @@
|
|||
__version__ = '0.1.25'
|
||||
__version__ = '0.1.26'
|
||||
|
|
|
|||
|
|
@ -254,6 +254,7 @@ def analyze_signal_Hilbert(time, e_signal, s_signal, freq_rtol=0.01):
|
|||
|
||||
return res
|
||||
|
||||
|
||||
def analyze_signal_sinfit(time, e_signal, s_signal, freq_rtol=0.01):
|
||||
"""
|
||||
Analyzes the dominant frequencies, phase shift, time shift, and periods between two signals e_signal(t) and s_signal(t) from a DataFrame.
|
||||
|
|
@ -360,7 +361,6 @@ def analyze_signal_sinfit(time, e_signal, s_signal, freq_rtol=0.01):
|
|||
return res
|
||||
|
||||
|
||||
|
||||
def analyze_signal_cross_correlation(time, e_signal, s_signal, freq_rtol=0.01):
|
||||
"""
|
||||
Analyzes signals using cross-correlation method for phase shift calculation (single mode only).
|
||||
|
|
@ -468,7 +468,6 @@ def analyze_signal_cross_correlation(time, e_signal, s_signal, freq_rtol=0.01):
|
|||
return res
|
||||
|
||||
|
||||
|
||||
def analyze_signal_wavelet(time, e_signal, s_signal, freq_rtol=0.01):
|
||||
"""
|
||||
Analyzes signals using wavelet transform for phase shift calculation (single mode only).
|
||||
|
|
@ -579,13 +578,29 @@ def analyze_signal_wavelet(time, e_signal, s_signal, freq_rtol=0.01):
|
|||
return res
|
||||
|
||||
|
||||
def plot_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, callback=analyze_signal_wavelet, output=None):
|
||||
def get_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, callback=analyze_signal_wavelet):
|
||||
"""
|
||||
"""
|
||||
res = []
|
||||
|
||||
for mod in range(n_modes):
|
||||
output = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
|
||||
res.append({
|
||||
'mode': mod,
|
||||
'freq': output['freq_e'],
|
||||
'phase': output['phase'],
|
||||
'delay': output['delay']
|
||||
})
|
||||
return pd.DataFrame(res)
|
||||
|
||||
|
||||
def plot_phases(e_time, e_filtered, e_frequencies, s_filtered, n_modes, callback=analyze_signal_wavelet, output=None):
|
||||
"""
|
||||
"""
|
||||
|
||||
fig, ax = plt.subplots(nrows=n_modes, ncols=2, figsize=(12, 2 * n_modes), gridspec_kw={'width_ratios': [3, 1]})
|
||||
|
||||
for mod in range(n_modes):
|
||||
|
||||
res = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
|
||||
|
||||
ax[mod, 0].set_title(f'Freq: {res['freq_e']:.3f}, Phase: {res['phase']:.3f}, Delay: {res['delay']:.3f}' )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue