% NLMS-Algorithmus % --------------- % function [ys,e,wf,fpo] = nlms(x,d,N,mu,wi) % % Parameter: % x : Eingangssignal % d : erwünschtes Signal (Referenzsignal) % N : Filterordnung % mu : konstante Schrittweite % wi : Startwerte der Filterkoeffizienten im Zeitbereich % % Rückgabewerte: % ys : Schätzung des Referenzsignals d aus x % e : Fehler d - ys % wf : Filterkoeffizienten am Ende der Adaption im Zeitbereich % fpo : Anzahl der benötigten Floating-Point Operationen % ------------------------------------------------------------------------- % Datum : 20.7.2001 % Autor : Jens Ahrensfeld % Thema : Diplomarbeit % Datei : nlms.m % Benötigte Dateien: keine % % ------------------------------------------------------------------------- function [ys,e,wf,fpo] = nlms(x,d,N,mu,wi) % ------------------------------------------------------------------------- % Initialisierung NLMS % ------------------------------------------------------------------------- wf = wi; ys = zeros(length(x),1); e = zeros(length(x),1); flops(0); % ------------------------------------------------------------------------- % NLMS Adaptation % ------------------------------------------------------------------------- for n = N : length(x) xs = x(n:-1:n-N+1); ys(n) = xs'*wf; e(n) = d(n) - ys(n); wf = wf + mu*e(n)*xs/(xs'*xs+0.001); end ; fpo = flops; % ------------------------------------------------------------------------- % Ende nlms.m