Dlaczego nadmierne modelowanie adaptacyjnego filtra AR NLMS naprawia ostre skoki?


10

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ół .0

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 )μ=0.01104x(t)=e(t)0.9x(t1)0.2x(t2)e(t)

wprowadź opis zdjęcia tutaj

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 )' );

2
Nie do końca rozumiem, co tam knujesz. Jakiego rodzaju filtr symulujesz za pomocą NLMS? - Oczywiście, im więcej parametrów masz, tym lepiej będziesz mógł dopasować się do dowolnego filtra; nawet jeśli parametry „najeżdżają na 0”, to nie znaczy, że nic nie robią.
leftaroundabout

@left: Symuluję model AR (2) o stałych parametrach, co oznacza, że ​​NLMS (2) powinien być w stanie całkowicie opisać system. Oczywiście dodatkowe parametry coś robią, ponieważ udaje im się zmniejszyć skoki, ale zastanawiam się, dlaczego - system jest nadmiernie modelowany, co zwykle oznacza po prostu wzrost przedziału ufności dla szacowanych parametrów.
Andreas,

@left: Przepraszam, przegapiłem twoje pierwsze zdanie. Planuję szacunkowe wartości parametrów AR adaptacyjnego filtra NLMS w czasie. Tj. z modelu szacunkowego dla x ( t ) = e ( t ) - a 1 x ( t - 1 ) - a 2 x ( t - 2 ) - . . . - a n x ( t - n ) n { 1 , 2 , 3 , 4 }anx(t)=e(t)a1x(t1)a2x(t2)...anx(tn)n{1,2,3,4}
Andreas,

Czy NLMS nie jest modelem MA podczas próby przybliżenia modelu AR?
Memming

1
@Memming: NLMS próbuje odwrócić model AR, więc model MA jest właściwym rozwiązaniem.
Peter K.

Odpowiedzi:


2

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ęść residueterminu).

Ten wykres pokazuje współczynniki opóźnienia off-zero xcorrbłę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) xcorrbłę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.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

function [th,err]=ar_nlms(y,order,mu)
eps = 0.000000001;
N=length(y);
th=zeros(order,N); // estimated parameters
err = zeros(1,N);
for t=order+1:N
    phi = -y( t-1:-1:t-order, : );
    err(t) = y(t)-phi'*th(:,t-1);
    residue = phi*( err(t) );
    th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
    size(residue)
end
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.