Acabei de simular um modelo de segunda ordem auto-regressivo, alimentado pelo ruído branco, e estimei os parâmetros com filtros de mínimos quadrados médios normalizados das ordens 1-4.
Como o filtro de primeira ordem submodela o sistema, é claro que as estimativas são estranhas. O filtro de segunda ordem encontra boas estimativas, embora tenha alguns saltos acentuados. Isso é de se esperar da natureza dos filtros NLMS.
O que me confunde são os filtros de terceira e quarta ordem. Eles parecem eliminar os saltos agudos, como pode ser visto na figura abaixo. Não vejo o que eles adicionariam, pois o filtro de segunda ordem é suficiente para modelar o sistema. Os parâmetros redundantes ficam em torno de qualquer maneira.
Alguém poderia me explicar esse fenômeno qualitativamente? O que causa e é desejável?
Eu usei o tamanho do passo , amostras, e o modelo AR que é branco ruído com variância 1.
O código MATLAB, para referência:
% 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 )' );
Respostas:
O que parece estar acontecendo é que, quando você começa a modelar demais, o sinal de erro fica cada vez menos branco.
Modifiquei seu código para retornar o sinal de erro (parte do
residue
termo).Esse gráfico mostra os coeficientes off-zero-lag
xcorr
do erro da ordem = 2 (azul), 3 (vermelho) e 4 (verde). Como você pode ver, os termos de atraso quase zero mas estão ficando maiores em magnitude.Se observarmos o FFT (espectro) do
xcorr
erro, veremos que os termos de frequência mais baixa (que causam grandes desvios) estão ficando menores (o erro está contendo mais frequências altas).Portanto, parece que o efeito de modelagem excessiva nesse caso é filtrar com alta frequência o erro, o que (neste exemplo) é benéfico.
fonte