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
|
return res
|
||||||
|
|
||||||
|
|
||||||
def analyze_signal_sinfit(time, e_signal, s_signal, freq_rtol=0.01):
|
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.
|
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
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def analyze_signal_cross_correlation(time, e_signal, s_signal, freq_rtol=0.01):
|
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).
|
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
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def analyze_signal_wavelet(time, e_signal, s_signal, freq_rtol=0.01):
|
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).
|
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
|
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]})
|
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):
|
for mod in range(n_modes):
|
||||||
|
|
||||||
res = callback(e_time, e_filtered[mod], s_filtered[mod], freq_rtol=0.3)
|
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}' )
|
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