Для улучшения характеристик сходимости алгоритма LMS нормализованный вариант (NLMS) использует адаптивный размер шага на основе мощности сигнала. По мере изменения мощности входного сигнала алгоритм вычисляет входную мощность и регулирует размер шага для поддержания соответствующего значения. Размер шага изменяется со временем, и в результате нормализованный алгоритм во многих случаях быстрее сходится с меньшим количеством выборок. Для входных сигналов, которые медленно изменяются во времени, нормализованный алгоритм LMS может быть более эффективным подходом LMS.
Пример использования подхода LMS см. в разделе Системная идентификация фильтра FIR с использованием алгоритма LMS.
Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта синтаксисом эквивалентного шага. Например, obj(x) становится step(obj,x).
Создать dsp.FIRFilter объект, представляющий идентифицируемую систему. Используйте fircband функция для разработки коэффициентов фильтра. Проектируемый фильтр представляет собой фильтр нижних частот, ограниченный до 0,2 пульсации в полосе останова.
filt = dsp.FIRFilter; filt.Numerator = fircband(12,[0 0.4 0.5 1],[1 1 0 0],[1 0.2],... {'w' 'c'});
Передать сигнал x к фильтру FIR. Требуемый сигнал d - сумма выходного сигнала неизвестной системы (КИХ-фильтр) и аддитивного шумового сигнала n.
x = 0.1*randn(1000,1); n = 0.001*randn(1000,1); d = filt(x) + n;
Для использования нормализованного изменения алгоритма LMS установите Method свойство на dsp.LMSFilter кому 'Normalized LMS'. Установите длину адаптивного фильтра равной 13 отводам, а размер шага - 0,2.
mu = 0.2; lms = dsp.LMSFilter(13,'StepSize',mu,'Method',... 'Normalized LMS');
Прохождение первичного входного сигнала x и желаемый сигнал d к фильтру LMS.
[y,e,w] = lms(x,d);
Продукция y адаптивного фильтра является сигнал, сходящийся к требуемому сигналу d, тем самым минимизируя ошибку e между двумя сигналами.
plot(1:1000, [d,y,e]) title('System Identification by Normalized LMS Algorithm') legend('Desired','Output','Error') xlabel('Time index') ylabel('Signal value')

Вектор весов w представляет коэффициенты фильтра LMS, который подобен неизвестной системе (FIR-фильтр). Чтобы подтвердить сходимость, сравните числитель фильтра FIR и оцененные веса адаптивного фильтра.
stem([(filt.Numerator).' w]) title('System Identification by Normalized LMS Algorithm') legend('Actual filter weights','Estimated filter weights',... 'Location','NorthEast')

[1] Хейс, Монсон Х., Статистическая цифровая обработка и моделирование сигналов. Хобокен, Нью-Джерси: John Wiley & Sons, 1996, pp.493-552.
[2] Хайкин, Саймон, теория адаптивных фильтров. Река Верхнее Седло, Нью-Джерси: Прентис-Холл, Инк., 1996.