Pourquoi la modélisation excessive d'un filtre AR NLMS adaptatif corrige-t-elle les pointes aiguës?

10

Je viens de simuler un modèle de second ordre auto-régressif alimenté par le bruit blanc et d'estimer les paramètres avec des filtres normalisés au carré le plus petit des ordres 1 à 4.

Comme le filtre de premier ordre sous-modèle le système, les estimations sont bien sûr étranges. Le filtre de second ordre trouve de bonnes estimations, bien qu'il comporte quelques sauts brusques. Cela est à prévoir de par la nature des filtres NLMS.

Ce qui m'embrouille, ce sont les filtres du troisième et du quatrième ordre. Ils semblent éliminer les sauts brusques, comme le montre la figure ci-dessous. Je ne vois pas ce qu'ils ajouteraient, car le filtre de second ordre est suffisant pour modéliser le système. Les paramètres redondants tournent autour de toute façon.0

Quelqu'un pourrait-il expliquer ce phénomène pour moi, qualitativement? Qu'est-ce qui la cause et est-ce souhaitable?

J'ai utilisé une taille de pas , échantillons et le modèle AR où est blanc bruit avec variance 1.μ=0.01104x(t)=e(t)0.9x(t1)0.2x(t2)e(t)

entrez la description de l'image ici

Le code MATLAB, pour référence:

% 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 )' );
Andreas
la source
2
Je ne comprends pas très bien ce que vous traitez là-bas. Quel type de filtre simulez-vous avec le NLMS? - Évidemment, plus vous avez de paramètres, mieux vous pourrez vous adapter à un filtre arbitraire; même si les paramètres "planent autour de 0" cela ne signifie pas qu'ils ne font rien.
leftaroundabout
@left: Je simule un modèle AR (2) avec des paramètres constants, ce qui signifie que le NLMS (2) devrait être capable de décrire complètement le système. Évidemment, les paramètres supplémentaires font quelque chose, car ils parviennent à réduire les pics, mais je me demande pourquoi - le système est sur-modélisé, ce qui signifie généralement que l'intervalle de confiance pour les paramètres estimés augmente.
Andreas
@left: Désolé, j'ai raté votre première phrase. Je trace les valeurs estimées des paramètres AR d'un filtre NLMS adaptatif au fil du temps. Soit partir du modèle estimé pouranx(t)=e(t)a1x(t1)a2x(t2)...anx(tn)n{1,2,3,4}
Andreas
Le NLMS n'est-il pas un modèle MA pendant que vous essayez d'approcher un modèle AR?
Memming
1
@Memming: Le NLMS essaie d' inverser le modèle AR, donc un modèle MA est la bonne chose à faire ici.
Peter K.

Réponses:

2

Ce qui semble se produire, c'est que lorsque vous commencez une modélisation excessive, le signal d'erreur devient de moins en moins blanc.

J'ai modifié votre code pour renvoyer le signal d'erreur (partie du residueterme).

Ce graphique montre les coefficients de décalage hors zéro xcorrde l'erreur pour l'ordre = 2 (bleu), 3 (rouge) et 4 (vert). Comme vous pouvez le constater, les termes de décalage proches de zéro mais non nuls deviennent de plus en plus importants.

Si nous regardons la FFT (spectre) de l' xcorrerreur, alors nous voyons que les termes de fréquence inférieure (qui provoquent les grandes dérives) deviennent plus petits (l'erreur contient plus de hautes fréquences).

Il semble donc que l'effet de la sur-modélisation dans ce cas soit de filtrer passe-haut l'erreur, ce qui (pour cet exemple) est bénéfique.

entrez la description de l'image ici

entrez la description de l'image ici

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
Peter K.
la source