def rls_NEW(x, d, N=55, lmbd=0.999, delta=10):
L = min(len(x), len(d))
lmbd_inv = 1 / lmbd
h = np.zeros((N, 1))
P = np.eye(N)*delta
e = np.zeros(L)
for n in range(L):
if n < N:
x1 = np.array(x[:n+1])
# print([1]*(N-n-1))
x_n = np.concatenate((x1[::-1],[0]*(N-n-1))).reshape(N, 1)
else:
x_n = np.array(x[n-N+1:n+1][::-1]).reshape(N, 1)
d_n = d[n]
y_n = np.dot(x_n.T, h)
e_n = d_n - y_n
g = np.dot(P, x_n)
g = g/(lmbd + np.dot(x_n.T, g))
h = h + e_n * g
P = lmbd_inv * (P - np.dot(g, np.dot(x_n.T, P)))
e[n] = e_n
return e
10-24
5080
04-23
4673
04-05
787
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交