Bir uyarlamalı AR NLMS filtresinin aşırı modellemesi neden keskin ani artışları düzeltiyor?


10

Ben sadece beyaz gürültü ile körüklenen bir oto-regresif ikinci-sıralı modeli simüle ettim ve 1-4 emirlerinin normalleştirilmiş en küçük-kare filtreleriyle parametreleri tahmin ettim.

Birinci dereceden filtre sistemi modellemediği için, tahminler tuhaftır. İkinci dereceden filtre, birkaç keskin sıçrama olmasına rağmen iyi tahminler bulur. Bu, NLMS filtrelerinin doğasından beklenmelidir.

Beni şaşırtan şey üçüncü ve dördüncü dereceden filtreler. Aşağıdaki şekilde görüldüğü gibi keskin sıçramaları ortadan kaldırıyor gibi görünüyorlar. Ekleyeceklerini göremiyorum, çünkü ikinci derece filtre sistemi modellemek için yeterli. Gereksiz parametreler yine de gezer.0

Birisi bana bu olguyu nitel olarak açıklayabilir mi? Buna ne neden olur ve arzu edilir mi?

I basamak boyutu kullanılabilir , 10 4 örnekleri, AR modeli x ( t ) = E ( t ) - 0.9 x ( t - 1 ) - 0.2 x ( t - 2 ) burada E ( t ) ile beyaz gürültü varyans 1.μ=0.01104x(t)=e(t)0.9x(t1)0.2x(t2)e(t)

resim açıklamasını buraya girin

Referans için MATLAB kodu:

% 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
Orada ne çizdiğini tam olarak anlamıyorum. NLMS ile ne tür bir filtre simüle ediyorsunuz? - Açıkçası, ne kadar çok parametreniz varsa, rastgele bir filtreye daha iyi sığabileceksiniz; "0'ın etrafında gezinin" parametreleri hiçbir şey yapmadıkları anlamına gelmez.
leftaroundabout

@left: Bir AR (2) modelini sabit parametrelerle simüle ediyorum, yani NLMS (2) sistemi tamamen tanımlayabilmelidir. Açıkçası ekstra parametreler, sivri uçları azaltmayı başardıkları için bir şey yaparlar, ama nedenini merak ediyorum - sistem aşırı modellenmiştir, bu da genellikle sadece tahmini parametreler için güven aralığının arttığı anlamına gelir.
Andreas

anx(t)=e(t)a1x(t1)a2x(t2)...anx(tn)n{1,2,3,4}

Bir AR modeline yaklaşmaya çalışırken NLMS bir MA modeli değil mi?
47'de Memming

1
@Memming: NLMS AR modelini tersine çevirmeye çalışıyor , bu yüzden MA modeli burada yapılacak doğru şey.
Peter K.

Yanıtlar:


2

Görünen şey, aşırı modellemeye başladığınızda, hata sinyalinin giderek daha az beyaz hale gelmesidir.

Kodunuzu hata sinyalini ( residueterimin bir parçası ) döndürmek için değiştirdim .

Bu grafik, xcorrsipariş = 2 (mavi), 3 (kırmızı) ve 4 (yeşil) için hatanın sıfır dışı gecikme katsayılarını gösterir . Gördüğünüz gibi, sıfıra yakın ancak sıfıra yakın gecikme terimleri büyüklükte büyüyor.

xcorrHatanın FFT'sine (spektrumuna) bakarsak, daha düşük frekans terimlerinin (büyük sürüklenmelere neden olan) küçüldüğünü (hatanın daha yüksek frekanslar içerdiğini) görürüz.

Bu nedenle, bu durumda aşırı modellemenin etkisi, hatayı (bu örnek için) faydalı olan yüksek geçişli filtrelemektir.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.