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, Монсон Х., Статистическая Цифровая обработка сигналов и Моделирование. Хобокен, NJ: John Wiley & Sons, 1996, pp.493–552.

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