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