Passband calculates power not amplitude

This commit is contained in:
Eric-Teunis de Boone 2022-11-02 16:07:09 +01:00
parent 007bd7f963
commit ee0f223423
2 changed files with 46 additions and 36 deletions

View file

@ -16,9 +16,9 @@ class passband(namedtuple("passband", ['low', 'high'], defaults=[0, np.inf])):
def freq_mask(frequencies):
return bandpass_mask(frequencies, self)
def signal_level(samples, samplerate, normalise_bandsize=True, **ft_kwargs):
def signal_power(samples, samplerate, normalise_bandsize=True, **ft_kwargs):
return bandlevel(samples, samplerate, self, normalise_bandsize, **ft_kwargs)
return bandpower(samples, samplerate, self, normalise_bandsize, **ft_kwargs)
def filter_samples(samples, samplerate, **ft_kwargs):
"""
@ -52,7 +52,7 @@ def bandpass_mask(freqs, band=passband()):
def bandsize(band = passband()):
return band[1] - band[0]
def bandlevel(samples, samplerate=1, band=passband(), normalise_bandsize=True, **ft_kwargs):
def bandpower(samples, samplerate=1, band=passband(), normalise_bandsize=True, **ft_kwargs):
fft, freqs = ft_spectrum(samples, samplerate, **ft_kwargs)
bandmask = bandpass_mask(freqs, band=band)
@ -62,9 +62,9 @@ def bandlevel(samples, samplerate=1, band=passband(), normalise_bandsize=True, *
else:
bins = 1
level = np.sum(np.abs(fft[bandmask])**2)
power = np.sum(np.abs(fft[bandmask])**2)
return level/bins
return power/bins
def signal_to_noise( samplerate, samples, noise, signal_band, noise_band=None):
if noise_band is None:
@ -73,9 +73,9 @@ def signal_to_noise( samplerate, samples, noise, signal_band, noise_band=None):
if noise is None:
noise = samples
noise_level = bandlevel(noise, samplerate, noise_band)
noise_power = bandpower(noise, samplerate, noise_band)
signal_level = bandlevel(samples, samplerate, signal_band)
signal_power = bandpower(samples, samplerate, signal_band)
return (signal_level/noise_level)**0.5
return (signal_power/noise_power)**0.5