Ahoj,
mohl by mi někdo opravit adaptivní RLS algoritmus (metodu) v C#? Vstupem je primární signál x, referenční signál d, řád filtru N, regulační a konvergenční konstanta. Výstupem pak výstupní signál y a chybový signál e. Nevím si rady zejména s přepočtem autokorelační matice p
public void rlsFilter(double[] x, double[] d, long N, double lambda, double delta, ref double[] y, ref double[] e)
{
long M = x.Length;
double[] w = new double[N];
double[] x_t = new double[M];
double[] g = new double[M];
double[,] P = new double[N + 1, N + 1];
y = new double[M];
e = new double[M];
// Naplneneni 0.
fillZeros(w, N);
fillZeros(y, M);
fillZeros(e, M);
fillP(P, N + 1, delta);
for (long i = 0; i < M; i++)
{
x_t[i] = x[M - i - 1];
}
for (long i = 1; i < N; i++)
{
y[i] = x_t[i] * w[i - 1];
e[i] = d[i] - y[i];
g[i] = (P[i, i] * x[i]) / (lambda * x_t[i] * P[i-1,i-1] * x[i]);
w[i] = w[i - 1] + e[i] * g[i];
P[i,i] = ((1 / lambda) * P[i - 1, i - 1]) - (g[i] * x_t[i] * (1 / lambda) * P[i - 1, i - 1]);
}
}
Děkuji za rady.
M.