def _agc_rms(data, window_size, desired_rms): """ Computes the RMS-amplitude AGC for data. :param data: ``list`` of data values to compute rms for. :param window_size: Length of window in number of samples. :param desired_rms: Root-mean-squared value of ``data * _agc_rms(data)``. :return: ``numpy.nparray`` with ``len(data)`` AGC values """ return float(desired_rms) / windowed_rms(data, window_size)
def test_windowed_rms(self): """ Should return the windowed RMS of a data array. """ rms0 = [ 1.0000000, 1.58113883, 2.54950976, 3.53553391, 4.52769257] # should work on a list a = [1, 2, 3, 4, 5] rms1 = amplitudes.windowed_rms(a, 2) for i in range(0, len(a)): self.assertAlmostEqual(rms0[i], rms1[i]) # should work on a numpy.ndarray a = np.asarray(a) rms1 = amplitudes.windowed_rms(a, 2) for i in range(0, len(a)): self.assertAlmostEqual(rms0[i], rms1[i]) # rms of homogenous data should be the same a0 = 20.32411 a = a0 * np.ones((100)) for w in [1, 10, 100]: rms = amplitudes.windowed_rms(a, w) for _rms in rms: self.assertEqual(a0, _rms)