System Identification КИХ-фильтра Используя нормированный LMS-алгоритм

Чтобы улучшать производительность сходимости LMS-алгоритма, нормированный вариант (NLMS) использует адаптивный размер шага на основе степени сигнала. Когда степень входного сигнала изменяется, алгоритм вычисляет входную мощность и настраивает размер шага, чтобы обеспечить соответствующее значение. Таким образом размер шага изменяется со временем. В результате нормированный алгоритм сходится более быстро с меньшим количеством выборок во многих случаях. Для входных сигналов, которые изменяются медленно в зависимости от времени, нормированный LMS может представлять более эффективный подход LMS.

Для примера с помощью подхода LMS смотрите System Identification КИХ-Фильтра Используя 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, Монсон Х., статистическая цифровая обработка сигналов и Modeling, John Wiley & Sons, 1996, 493–552.

[2] Haykin, Саймон, адаптивная теория фильтра, Prentice-Hall, Inc., 1996