Generalized Normalized Gradient Descent (GNGD)¶
New in version 0.2.
Changed in version 1.2.0.
The generalized normalized gradient descent (GNGD) adaptive filter is an extension of the NLMS adaptive filter (Normalized Least-mean-square (NLMS)).
The GNGD filter can be created as follows
>>> import padasip as pa
>>> pa.filters.FilterGNGD(n)
where n is the size (number of taps) of the filter.
Content of this page:
See also
Minimal Working Examples¶
If you have measured data you may filter it as follows
import numpy as np
import matplotlib.pylab as plt
import padasip as pa
# creation of data
N = 500
x = np.random.normal(0, 1, (N, 4)) # input matrix
v = np.random.normal(0, 0.1, N) # noise
d = 2*x[:,0] + 0.1*x[:,1] - 4*x[:,2] + 0.5*x[:,3] + v # target
# identification
f = pa.filters.FilterGNGD(n=4, mu=0.1, w="random")
y, e, w = f.run(d, x)
# show results
plt.figure(figsize=(15,9))
plt.subplot(211);plt.title("Adaptation");plt.xlabel("samples - k")
plt.plot(d,"b", label="d - target")
plt.plot(y,"g", label="y - output");plt.legend()
plt.subplot(212);plt.title("Filter error");plt.xlabel("samples - k")
plt.plot(10*np.log10(e**2),"r", label="e - error [dB]");plt.legend()
plt.tight_layout()
plt.show()