upd
This commit is contained in:
parent
3e15c2ebf5
commit
78157bcc7b
1 changed files with 12 additions and 12 deletions
|
@ -91,7 +91,7 @@ def filter_signal_by_modes(time, signal, num_modes=1, bandwidth_factor=0.1, nyqu
|
|||
return filtered_signals, dominant_freqs, time_filtered
|
||||
|
||||
|
||||
def analyze_signal_Hilbert(time, e_signal, s_signal):
|
||||
def analyze_signal_Hilbert(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.
|
||||
Uses Hilbert transform method for phase shift calculation (single mode only).
|
||||
|
@ -143,8 +143,8 @@ def analyze_signal_Hilbert(time, e_signal, s_signal):
|
|||
freq_s = s_peak_freqs[s_idx]
|
||||
|
||||
# Check if frequencies match within 1%
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > 0.01:
|
||||
raise ValueError("Frequency difference exceeds 1%. Phase shift cannot be determined.")
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > freq_rtol:
|
||||
raise ValueError(f"Frequency difference exceeds {freq_rtol*100}%. Phase shift cannot be determined.")
|
||||
|
||||
# Calculate mean frequency for phase shift calculation
|
||||
mean_freq = (freq_e + freq_s) / 2
|
||||
|
@ -200,7 +200,7 @@ def analyze_signal_Hilbert(time, e_signal, s_signal):
|
|||
return (period_e, period_s, freq_e, freq_s,
|
||||
mean_phase_diff, phase_diff_deg, time_shift)
|
||||
|
||||
def analyze_signal_sinfit(time, e_signal, s_signal):
|
||||
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.
|
||||
Uses curve fitting method for phase shift calculation (single mode only).
|
||||
|
@ -252,8 +252,8 @@ def analyze_signal_sinfit(time, e_signal, s_signal):
|
|||
freq_s = s_peak_freqs[s_idx]
|
||||
|
||||
# Check if frequencies match within 1%
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > 0.01:
|
||||
raise ValueError("Frequency difference exceeds 1%. Phase shift cannot be determined.")
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > freq_rtol:
|
||||
raise ValueError(f"Frequency difference exceeds {freq_rtol*100}%. Phase shift cannot be determined.")
|
||||
|
||||
# Calculate mean frequency for phase shift calculation
|
||||
mean_freq = (freq_e + freq_s) / 2
|
||||
|
@ -300,7 +300,7 @@ def analyze_signal_sinfit(time, e_signal, s_signal):
|
|||
|
||||
|
||||
|
||||
def analyze_signal_cross_correlation(time, e_signal, s_signal):
|
||||
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).
|
||||
"""
|
||||
|
@ -351,8 +351,8 @@ def analyze_signal_cross_correlation(time, e_signal, s_signal):
|
|||
freq_s = s_peak_freqs[s_idx]
|
||||
|
||||
# Check if frequencies match within 1%
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > 0.01:
|
||||
raise ValueError("Frequency difference exceeds 1%. Phase shift cannot be determined.")
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > freq_rtol:
|
||||
raise ValueError(f"Frequency difference exceeds {freq_rtol*100}%. Phase shift cannot be determined.")
|
||||
|
||||
# Calculate mean frequency for phase shift calculation
|
||||
mean_freq = (freq_e + freq_s) / 2
|
||||
|
@ -401,7 +401,7 @@ def analyze_signal_cross_correlation(time, e_signal, s_signal):
|
|||
phase_diff, phase_diff_deg, time_shift)
|
||||
|
||||
|
||||
def analyze_signal_wavelet(time, e_signal, s_signal):
|
||||
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).
|
||||
"""
|
||||
|
@ -452,8 +452,8 @@ def analyze_signal_wavelet(time, e_signal, s_signal):
|
|||
freq_s = s_peak_freqs[s_idx]
|
||||
|
||||
# Check if frequencies match within 1%
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > 0.01:
|
||||
raise ValueError("Frequency difference exceeds 1%. Phase shift cannot be determined.")
|
||||
if np.abs(freq_e - freq_s) / ((freq_e + freq_s)/2) > freq_rtol:
|
||||
raise ValueError(f"Frequency difference exceeds {freq_rtol*100}%. Phase shift cannot be determined.")
|
||||
|
||||
# Calculate mean frequency for phase shift calculation
|
||||
mean_freq = (freq_e + freq_s) / 2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue