Skip to content
Snippets Groups Projects
Commit 597df20c authored by Aaron Viets's avatar Aaron Viets
Browse files

FIRtools.py: added option for faster ASDs

parent eff71f23
No related branches found
No related tags found
No related merge requests found
Pipeline #270155 passed
......@@ -1379,7 +1379,7 @@ def freqresp(filt, delay_samples = 0, samples_per_lobe = 8, return_double = Fals
#
def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0):
def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0, fast = True):
# How many FFTs will we take?
if len(data) < fft_samples:
......@@ -1405,9 +1405,14 @@ def asd(data, sr, fft_samples, fft_spacing, window = 'blackman', freq_res = 1.0)
win = Blackman(fft_samples)
# Compute the ASD
asd = abs(rfft(win * data[:fft_samples]))
for i in range(1, num_ffts):
asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
if fast:
asd = abs(np.fft.rfft(win * data[:fft_samples]))
for i in range(1, num_ffts):
asd += abs(np.fft.rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
else:
asd = abs(rfft(win * data[:fft_samples]))
for i in range(1, num_ffts):
asd += abs(rfft(win * data[i * fft_spacing : i * fft_spacing + fft_samples]))
asd /= num_ffts * sr * np.sqrt((float(fft_samples) / sr))
return np.float64(asd)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment