From 1d1edbb0492e2adff03d9d2771772802564b1116 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 2 Jul 2018 00:15:28 +0200 Subject: [PATCH] Spectrum averaging: updated documentation --- doc/img/MainWindow_spectrum_gui.png | Bin 0 -> 17263 bytes doc/img/MainWindow_spectrum_gui.xcf | Bin 0 -> 89736 bytes sdrgui/gui/glspectrumgui.cpp | 2 +- sdrgui/readme.md | 97 +++++++++++++++++++++++++++- 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 doc/img/MainWindow_spectrum_gui.png create mode 100644 doc/img/MainWindow_spectrum_gui.xcf diff --git a/doc/img/MainWindow_spectrum_gui.png b/doc/img/MainWindow_spectrum_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..59d6e82093e996f4920ccb587e4e80775ea36d2b GIT binary patch literal 17263 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 + float averagingTime = (m_fftSize * (m_averagingNb == 0 ? 1 : m_averagingNb)) / (float) m_glSpectrum->getSampleRate(); setNumberStr(averagingTime, 2, s); ui->averaging->setToolTip(QString("Number of averaging samples (avg time: %1s)").arg(s)); } diff --git a/sdrgui/readme.md b/sdrgui/readme.md index 4feffd754..b4013862f 100644 --- a/sdrgui/readme.md +++ b/sdrgui/readme.md @@ -226,7 +226,102 @@ Use this push button to add a new channel with the selected plugin

4. Spectrum display control

-These are the controls of the main spectrum display in (7). Please refer to the spectrum display documentation (TBD) for details. +![Spectrum GUI](../doc/img/MainWindow_spectrum_gui.png) + +These are the controls of the main spectrum display in (7). The same controls are found in the plugins that feature a spectrum display: + - Channel Analyzer + - Broadcast FM demodulator + - SSB demodulator + - UDP source + - UDP sink + +

4.1. FFT window selector

+ +Use this combo box to select which window is applied to the FFT: + - **Bart**: Bartlett + - **B-H**: Blackmann-Harris + - **FT**: Flat top + - **Ham**: Hamming (default) + - **Han**: Hanning + - **Rec**: Rectangular (no window) + +

4.2. FFT size

+ +Select the size of the FFT window among these values: + - 128 + - 256 + - 512 + - 1k = 1024 (default) + - 2k = 2048 + - 4k = 4096 + +

4.3. Reference level

+ +This is the level in dB at the top of the display range. You can select values between 0 and -110 in 5 dB steps + +

4.4. Range

+ +This is the range of display in dB. You can select values between 5 and 100 in 5 dB steps + +

4.5. Averaging mode

+ +Use this combo to select which averaging mode is applied: + - **No**: no averaging. Disables averaging regardless of the number of averaged samples (4.6). This is the default option + - **Mov**: moving average. This is a sliding average over the amount of samples specified next (4.6). There is one complete FFT line produced at every FFT sampling period + - **Fix**: fixed average. Average is done over the amount of samples specified next (4.6) and a result is produced at the end of the corresponding period then the next block of averaged samples is processed. There is one complete FFT line produced every FFT sampling period multiplied by the number of averaged samples (4.6). The time scale on the waterfall display is updated accordingly. + +

4.6. Number of averaged samples

+ +Each FFT bin (squared magnitude) is averaged over a number of samples. This combo allows selecting the number of samples between these values: 0 (no averaging), 2, 5, 10, 20, 50, 100, 200, 500, 1k (1000). The tooltip mentions the resulting averaging period considering the baseband sample rate and FFT size. +Averaging reduces the noise variance and can be used to better detect weak continuous signals. The fixed averaging mode allows long time monitoring on the waterfall. + +

4.7. Phosphor display stroke decay

+ +This controls the decay rate of the stroke when phosphor display is engaged (4.C) + +

4.8. Phosphor display holdoff

+ +This controls the holdoff when phosphor display is engaged (4.C) + +

4.9. Phosphor display stroke strength

+ +This controls the stroke strength when phosphor display is engaged (4.C) + +

4.A. Trace intensity

+ +This controls the intensity of the maximum (4.D) and current (4.E) spectrum trace + +

4.B. Clear spectrum

+ +This resets the maximum spectrum trace and phosphor remanence + +

4.C. Phosphor display

+ +Toggles the phosphor display on the spectrum + +

4.D. Maximum trace

+ +Toggles the maximum trace display (red trace) on the spectrum + +

4.E. Current trace

+ +Toggles the current trace display (yellow trace) on the spectrum + +

4.F. Waterfall/spectrum placement

+ +Toggles the spectrum on top or on bottom versus waterfall + +

4.G. Waterfall

+ +Toggles the waterfall display + +

4.H.Grid

+ +Toggles the grid display + +

4.I.Grid intensity

+ +Controls the intensity of the grid display

5. Presets and commands