diff --git a/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb b/applications/lofar2/model/pfb_os/pfb_reconstruction.ipynb index 8fbe59367c8c8f7e38722280600a54ad3bab9b3c..9d0d6c3504eb4fae1d4171a1f2af6b622e01e3ef 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 d8dae69e01eca0ec0a2ce0aa0583a4d80b1c1a9a..3b7b630a6bc4752ddc59d761a12e510fc8e8ff3c 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))