From 79b3813ce6354be0ccf03bcc3d478226b95615fb Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 14 Nov 2024 10:13:16 +0100 Subject: [PATCH] Add snr_db(). --- applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb | 4 ++-- applications/lofar2/model/rtdsp/utilities.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb b/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb index 8fbe59367c..9d0d6c3504 100644 --- a/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb +++ b/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb @@ -56,7 +56,7 @@ " sys.path.insert(0, module_path)\n", "\n", "# Import rtdsp\n", - "from rtdsp.utilities import pow_db\n", + "from rtdsp.utilities import pow_db, snr_db\n", "from rtdsp.firfilter import prototype_fir_low_pass_filter, design_fir_low_pass_filter, \\\n", " design_fir_low_pass_filter_adjust, \\\n", " raised_cosine_response, square_root_raised_cosine_response, \\\n", @@ -724,7 +724,7 @@ "outData = reconstructedData[intGroupDelay :]\n", "diffData = inpData - outData\n", "diffDataMax = np.max(np.abs(diffData))\n", - "SNRdb = pow_db(np.std(wgData) / np.std(diffData))\n", + "SNRdb = snr_db(wgData, diffData)\n", "# Expected SNR = 11.96 dB for Ntap = 8, Ndft = 16, 'firwin', hpFactor = 1.0, 'noise'\n", "print('SNRdb = %.2f [dB]' % SNRdb)\n", "if SNRdb < 100:\n", diff --git a/applications/lofar2/model/rtdsp/utilities.py b/applications/lofar2/model/rtdsp/utilities.py index d8dae69e01..3b7b630a6b 100644 --- a/applications/lofar2/model/rtdsp/utilities.py +++ b/applications/lofar2/model/rtdsp/utilities.py @@ -64,6 +64,11 @@ def pow_db(volts): return 20 * np.log10(np.abs(volts) + c_atol) +def snr_db(signalData, noiseData): + """Signal to noise ration in dB""" + return pow_db(np.std(signalData) / np.std(noiseData)) + + def is_integer_value(value): """Return true when value is sufficiently close to its integer value.""" return np.isclose(value, np.round(value)) -- GitLab