diff options
-rw-r--r-- | gr-fft/grc/fft_logpwrfft_x.block.yml | 9 | ||||
-rw-r--r-- | gr-fft/python/fft/logpwrfft.py | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gr-fft/grc/fft_logpwrfft_x.block.yml b/gr-fft/grc/fft_logpwrfft_x.block.yml index 47ca169496..1b8b4a4c30 100644 --- a/gr-fft/grc/fft_logpwrfft_x.block.yml +++ b/gr-fft/grc/fft_logpwrfft_x.block.yml @@ -36,6 +36,12 @@ parameters: label: Average Alpha dtype: real default: '1.0' +- id: shift + label: FFT Shift + dtype: bool + default: 'False' + options: ['True', 'False'] + option_labels: ['On', 'Off'] inputs: - domain: stream @@ -55,7 +61,8 @@ templates: ref_scale=${ref_scale}, frame_rate=${frame_rate}, avg_alpha=${avg_alpha}, - average=${average}) + average=${average}, + shift=${shift}) callbacks: - set_sample_rate(${sample_rate}) - set_avg_alpha(${avg_alpha}) diff --git a/gr-fft/python/fft/logpwrfft.py b/gr-fft/python/fft/logpwrfft.py index f3c27342cd..82f852e190 100644 --- a/gr-fft/python/fft/logpwrfft.py +++ b/gr-fft/python/fft/logpwrfft.py @@ -26,7 +26,7 @@ class _logpwrfft_base(gr.hier_block2): Create a log10(abs(fft)) stream chain, with real or complex input. """ - def __init__(self, sample_rate, fft_size, ref_scale, frame_rate, avg_alpha, average, win=None): + def __init__(self, sample_rate, fft_size, ref_scale, frame_rate, avg_alpha, average, win=None, shift=False): """ Create an log10(abs(fft)) stream chain. Provide access to the setting the filter and sample rate. @@ -39,6 +39,7 @@ class _logpwrfft_base(gr.hier_block2): avg_alpha: FFT averaging (over time) constant [0.0-1.0] average: Whether to average [True, False] win: the window taps generation function + shift: shift zero-frequency component to center of spectrum """ gr.hier_block2.__init__(self, self._name, gr.io_signature(1, 1, self._item_size), # Input signature @@ -48,10 +49,9 @@ class _logpwrfft_base(gr.hier_block2): sample_rate=sample_rate, vec_rate=frame_rate, vec_len=fft_size) - if win is None: win = window.blackmanharris fft_window = win(fft_size) - fft = self._fft_block[0](fft_size, True, fft_window) + fft = self._fft_block[0](fft_size, True, fft_window, shift=shift) window_power = sum([x*x for x in fft_window]) c2magsq = blocks.complex_to_mag_squared(fft_size) |