Адаптивный фильтр адаптирует свои коэффициенты фильтра, чтобы совпадать с коэффициентами неизвестной системы. Цель состоит в том, чтобы минимизировать сигнал ошибки между выходом неизвестной системы и выходом адаптивного фильтра. Когда эти два выходных параметров сходятся и соответствуют тесно для того же входа, коэффициенты, как говорят, соответствуют тесно. Адаптивный фильтр в этом состоянии напоминает неизвестную систему. Этот пример сравнивает уровень, на котором эта сходимость происходит для нормированного LMS (NLMS) алгоритм и LMS-алгоритм без нормализации.
Создайте dsp.FIRFilter
это представляет неизвестную систему. Передайте x
сигнала как вход к неизвестной системе. Желаемый
d
сигнала сумма выхода неизвестной системы (КИХ-фильтр), и аддитивный шум сигнализируют
о n
.
filt = dsp.FIRFilter; filt.Numerator = fircband(12,[0 0.4 0.5 1],[1 1 0 0],[1 0.2],... {'w' 'c'}); x = 0.1*randn(1000,1); n = 0.001*randn(1000,1); d = filt(x) + n;
Создайте два dsp.LMSFilter
объекты, с одним набором к LMS-алгоритму и другим набором к нормированному LMS-алгоритму. Выберите размер шага адаптации 0,2 и установите длину адаптивного фильтра к 13 касаниям.
mu = 0.2; lms_nonnormalized = dsp.LMSFilter(13,'StepSize',mu,... 'Method','LMS'); lms_normalized = dsp.LMSFilter(13,'StepSize',mu,... 'Method','Normalized LMS');
Передайте сигнал первичного входного параметра x
и желаемый d
сигнала обоим изменения LMS-алгоритма. Переменные
e1
и e2
представляйте ошибку между желаемым сигналом и выходом нормированных и ненормированных фильтров, respecitvely.
[~,e1,~] = lms_normalized(x,d); [~,e2,~] = lms_nonnormalized(x,d);
Постройте сигналы ошибки для обоих изменений. Сигнал ошибки для варианта NLMS сходится, чтобы обнулить намного быстрее, чем сигнал ошибки для варианта LMS. Нормированная версия адаптируется в гораздо меньшем количестве итераций к результату, почти столь же хорошему как ненормированная версия.
plot([e1,e2]); title('Comparing the LMS and NLMS Conversion Performance'); legend('NLMS derived filter weights', ... 'LMS derived filter weights','Location', 'NorthEast'); xlabel('Time index') ylabel('Signal value')
[1] Hayes, Монсон Х., Статистическая Цифровая обработка сигналов и Моделирование. Хобокен, NJ: John Wiley & Sons, 1996, pp.493–552.
[2] Haykin, Саймон, адаптивная теория фильтра. Верхний Сэддл-Ривер, NJ: Prentice-Hall, Inc., 1996.