Właśnie przeprowadziłem symulację autoregresyjnego modelu drugiego rzędu napędzanego białym szumem i oszacowałem parametry za pomocą znormalizowanych filtrów najmniejszych średnich kwadratów rzędu 1-4.
Jako że filtr pierwszego rzędu nie modeluje systemu, szacunki są oczywiście dziwne. Filtr drugiego rzędu znajduje dobre oszacowania, chociaż ma kilka ostrych skoków. Tego należy się spodziewać po charakterze filtrów NLMS.
Mylą mnie filtry trzeciego i czwartego rzędu. Wydaje się, że eliminują ostre skoki, jak pokazano na poniższym rysunku. Nie widzę, co by dodali, ponieważ filtr drugiego rzędu wystarcza do modelowania systemu. Nadmiarowe parametry i tak oscylują wokół .
Czy ktoś mógłby mi wyjaśnić to zjawisko jakościowo? Co to powoduje i czy jest pożądane?
Użyłem wielkości kroku , próbek, a model AR gdzie jest biały hałas z wariancją 1.10 4 x ( t ) = e ( t ) - 0,9 x ( t - 1 ) - 0,2 x ( t - 2 ) e ( t )
Kod MATLAB w celach informacyjnych:
% ar_nlms.m
function th=ar_nlms(y,order,mu)
N=length(y);
th=zeros(order,N); % estimated parameters
for t=na+1:N
phi = -y( t-1:-1:t-na, : );
residue = phi*( y(t)-phi'*th(:,t-1) );
th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
end
% main.m
y = filter( [1], [1 0.9 0.2], randn(1,10000) )';
plot( ar_nlms( y, 2, 0.01 )' );
Odpowiedzi:
Wydaje się, że dzieje się tak, że po rozpoczęciu nadmiernego modelowania sygnał błędu staje się coraz mniej biały.
Zmodyfikowałem twój kod, aby zwracał sygnał błędu (część
residue
terminu).Ten wykres pokazuje współczynniki opóźnienia off-zero
xcorr
błędu dla rzędu = 2 (niebieski), 3 (czerwony) i 4 (zielony). Jak widać, terminy opóźnienia zbliżone do zera są coraz większe.Jeśli spojrzymy na FFT (widmo)
xcorr
błędu, zobaczymy, że warunki niższej częstotliwości (które powodują duże dryfy) stają się coraz mniejsze (błąd zawiera więcej wysokich częstotliwości).Wydaje się więc, że efektem nadmiernego modelowania w tym przypadku jest filtr górnoprzepustowy błędu, co (w tym przykładzie) jest korzystne.
źródło