Чтобы улучшить эффективность LMS-алгоритма, нормализованный вариант (NLMS) использует адаптивный размер шага, основанный на степени сигнала. Когда изменяется степень входного сигнала, алгоритм вычисляет вход степени и настраивает размер шага, чтобы сохранить соответствующее значение. Размер шага изменяется со временем, и в результате нормализованный алгоритм быстрее сходится с меньшим количеством выборок во многих случаях. Для входных сигналов, которые изменяются медленно с течением времени, нормализованный LMS-алгоритм может быть более эффективным подходом LMS.
Для получения примера, использующей подход LMS, смотрите Систему идентификации конечной импульсной характеристики Filter Using LMS-алгоритма.
Примечание.Если вы используете R2016a или более ранний релиз, замените каждый вызов объекта эквивалентным синтаксисом шага. Для примера, obj(x)
становится step(obj,x)
.
Создайте dsp.FIRFilter
объект, который представляет систему, которая будет идентифицирована. Используйте fircband
функция для разработки коэффициентов фильтра. Спроектированный фильтр является lowpass фильтром, ограниченным 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
к конечная импульсная характеристика. Требуемый сигнал 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-фильтра, который приспособлен напоминать неизвестную систему ( конечную импульсную характеристику). Чтобы подтвердить сходимость, сравните числитель конечной импульсной характеристики и оценочные веса адаптивного фильтра.
stem([(filt.Numerator).' w]) title('System Identification by Normalized LMS Algorithm') legend('Actual filter weights','Estimated filter weights',... 'Location','NorthEast')
[1] Hayes, Monson H., Statistical Digital Signal Processing and Modeling. Hoboken, NJ: John Wiley & Sons, 1996, pp.493-552.
[2] Haykin, Simon, Adaptive Filter Theory. Upper Saddle River, NJ: Prentice-Hall, Inc., 1996.