Я просто смоделировал авторегрессивную модель второго порядка на основе белого шума и оценил параметры с помощью нормализованных фильтров наименьших квадратов порядка 1-4.
Поскольку фильтр первого порядка недооценивает систему, оценки, конечно, странные. Фильтр второго порядка находит хорошие оценки, хотя имеет несколько резких скачков. Этого следует ожидать от природы фильтров NLMS.
Что меня смущает, так это фильтры третьего и четвертого порядка. Похоже, они устраняют резкие скачки, как видно на рисунке ниже. Я не вижу, что они добавят, поскольку фильтра второго порядка достаточно для моделирования системы. В любом случае избыточные параметры колеблются около .
Может ли кто-нибудь качественно объяснить мне это явление? Чем это вызвано и желательно ли?
Я использовал размер шага , выборок, и модель AR где - белый шум с дисперсией 1.
Код MATLAB, для справки:
% 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 )' );
Ответы:
Похоже, что происходит, когда вы начинаете избыточное моделирование, сигнал ошибки становится все менее и менее белым.
Я изменил ваш код, чтобы вернуть сигнал об ошибке (часть
residue
термина).На этом графике показаны коэффициенты отклонения от нуля
xcorr
для ошибки для порядка = 2 (синий), 3 (красный) и 4 (зеленый). Как вы можете видеть, слагаемые, близкие к нулю, но не к нулю, становятся больше по величине.Если мы посмотрим на БПФ (спектр)
xcorr
ошибки, то увидим, что низкочастотные члены (которые вызывают большие смещения) становятся меньше (ошибка содержит более высокие частоты).Таким образом, похоже, что эффект избыточного моделирования в этом случае заключается в фильтрации верхних частот ошибки, что (для этого примера) является полезным.
источник