exponenta event banner

Системная идентификация фильтра FIR по алгоритму LMS

Идентификация системы - это процесс идентификации коэффициентов неизвестной системы с помощью адаптивного фильтра. Общий обзор процесса показан в разделе Идентификация системы - использование адаптивного фильтра для идентификации неизвестной системы. Основными компонентами являются:

  • Алгоритм адаптивного фильтра. В этом примере установите Method имущество dsp.LMSFilter кому 'LMS' для выбора алгоритма адаптивного фильтра LMS.

  • Неизвестная система или процесс для адаптации. В этом примере фильтр разработан fircband является неизвестной системой.

  • Соответствующие входные данные для осуществления процесса адаптации. Для общей модели LMS это желаемый сигнал d (k) и входной сигнал x (k).

Целью адаптивного фильтра является минимизация сигнала ошибки между выходом адаптивного фильтра y (k) и выходом неизвестной системы (или системы, которая должна быть идентифицирована) d (k). Как только сигнал ошибки минимизируется, адаптированный фильтр напоминает неизвестную систему. Коэффициенты обоих фильтров тесно совпадают.

Примечание.При использовании 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(250,1);
n = 0.01*randn(250,1);
d = filt(x) + n;

Адаптивный фильтр

При наличии разработанного неизвестного фильтра и требуемого сигнала создайте и примените объект адаптивного фильтра LMS для идентификации неизвестного фильтра.

Подготовка объекта адаптивного фильтра требует начальных значений для оценок коэффициентов фильтра и размера шага LMS (mu). Можно начать с некоторого набора ненулевых значений в качестве оценок коэффициентов фильтра. В этом примере используются нули для 13 начальных весов фильтра. Установите InitialConditions имущество dsp.LMSFilter к требуемым начальным значениям весов фильтра. Для размера шага 0,8 является хорошим компромиссом между достаточно большим для того, чтобы сойтись в пределах 250 итераций (250 точек входной выборки) и достаточно малым для того, чтобы создать точную оценку неизвестного фильтра.

Создать dsp.LMSFilter объект для представления адаптивного фильтра, который использует адаптивный алгоритм LMS. Установите длину адаптивного фильтра равной 13 отводам, а размер шага - 0,8.

mu = 0.8;
lms = dsp.LMSFilter(13,'StepSize',mu)
lms = 
  dsp.LMSFilter with properties:

                   Method: 'LMS'
                   Length: 13
           StepSizeSource: 'Property'
                 StepSize: 0.8000
            LeakageFactor: 1
        InitialConditions: 0
           AdaptInputPort: false
    WeightsResetInputPort: false
            WeightsOutput: 'Last'

  Show all properties

Прохождение первичного входного сигнала x и желаемый сигнал d к фильтру LMS. Запустите адаптивный фильтр для определения неизвестной системы. Продукция y адаптивного фильтра является сигнал, сходящийся к требуемому сигналу d, тем самым минимизируя ошибку e между двумя сигналами.

Постройте график результатов. Выходной сигнал не соответствует требуемому сигналу, что делает ошибку между двумя нетривиальными.

[y,e,w] = lms(x,d);
plot(1:250, [d,y,e])
title('System Identification of an FIR filter')
legend('Desired','Output','Error')
xlabel('Time index')
ylabel('Signal value')

Figure contains an axes. The axes with title System Identification of an FIR filter contains 3 objects of type line. These objects represent Desired, Output, Error.

Сравнение весов

Вектор весов w представляет коэффициенты фильтра LMS, который подобен неизвестной системе (фильтр FIR). Чтобы подтвердить сходимость, сравните числитель фильтра FIR и расчетные веса адаптивного фильтра.

Оцененные веса фильтра не совпадают с фактическими весами фильтра, подтверждая результаты, наблюдаемые на предыдущем графике сигнала.

stem([(filt.Numerator).' w])
title('System Identification by Adaptive LMS Algorithm')
legend('Actual filter weights','Estimated filter weights',...
       'Location','NorthEast')

Figure contains an axes. The axes with title System Identification by Adaptive LMS Algorithm contains 2 objects of type stem. These objects represent Actual filter weights, Estimated filter weights.

Изменение размера шага

В качестве эксперимента измените размер шага на 0,2. Повторение примера с mu = 0.2 приводит к следующему графику стебля. Фильтры не сходятся, и расчетные веса не являются хорошими расчетами фактических весов.

mu = 0.2;
lms = dsp.LMSFilter(13,'StepSize',mu);
[~,~,w] = lms(x,d);
stem([(filt.Numerator).' w])
title('System Identification by Adaptive LMS Algorithm')
legend('Actual filter weights','Estimated filter weights',...
       'Location','NorthEast')

Figure contains an axes. The axes with title System Identification by Adaptive LMS Algorithm contains 2 objects of type stem. These objects represent Actual filter weights, Estimated filter weights.

Увеличение количества выборок данных

Увеличьте размер кадра требуемого сигнала. Несмотря на то, что это увеличивает количество вычислений, алгоритм LMS теперь имеет больше данных, которые можно использовать для адаптации. При 1000 выборках данных сигнала и размере шага 0,2 коэффициенты выравниваются ближе, чем раньше, что указывает на улучшенную сходимость.

release(filt);
x = 0.1*randn(1000,1);
n = 0.01*randn(1000,1);
d = filt(x) + n;
[y,e,w] = lms(x,d);
stem([(filt.Numerator).' w])
title('System Identification by Adaptive LMS Algorithm')
legend('Actual filter weights','Estimated filter weights',...
       'Location','NorthEast')

Figure contains an axes. The axes with title System Identification by Adaptive LMS Algorithm contains 2 objects of type stem. These objects represent Actual filter weights, Estimated filter weights.

Увеличьте число выборок данных путем ввода данных через итерации. Выполните алгоритм на 4000 выборках данных, переданных в алгоритм LMS партиями по 1000 выборок в течение 4 итераций.

Сравните веса фильтров. Веса фильтра LMS очень близко совпадают с весами фильтра FIR, что указывает на хорошую сходимость.

release(filt);
n = 0.01*randn(1000,1);
for index = 1:4
  x = 0.1*randn(1000,1);
  d = filt(x) + n;
  [y,e,w] = lms(x,d);
end
stem([(filt.Numerator).' w])
title('System Identification by Adaptive LMS Algorithm')
legend('Actual filter weights','Estimated filter weights',...
       'Location','NorthEast')

Figure contains an axes. The axes with title System Identification by Adaptive LMS Algorithm contains 2 objects of type stem. These objects represent Actual filter weights, Estimated filter weights.

Выходной сигнал очень близко соответствует требуемому сигналу, делая ошибку между двумя близкими к нулю.

plot(1:1000, [d,y,e])
title('System Identification of an FIR filter')
legend('Desired','Output','Error')
xlabel('Time index')
ylabel('Signal value')

Figure contains an axes. The axes with title System Identification of an FIR filter contains 3 objects of type line. These objects represent Desired, Output, Error.

См. также

Объекты

Связанные темы

Ссылки

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

[2] Хайкин, Саймон, теория адаптивных фильтров. Река Верхнее Седло, Нью-Джерси: Прентис-Холл, Инк., 1996.