Система идентификации является процессом идентификации коэффициентов неизвестной системы с помощью адаптивного фильтра. Общий обзор процесса, как показывают, в System Identification – Используя Адаптивный Фильтр Идентифицирует Неизвестную Систему. Основные включенные компоненты:
Адаптивный алгоритм фильтра. В этом примере, набор Method
свойство dsp.LMSFilter
к 'LMS'
выбрать адаптивный алгоритм фильтра LMS.
Неизвестная система или процесс, чтобы адаптироваться к. В этом примере фильтр спроектирован fircband
неизвестная система.
Соответствующие входные данные, чтобы осуществить процесс адаптации. Для типовой модели 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(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')
Вектор весов w
представляет коэффициенты фильтра LMS, который адаптируется, чтобы напомнить неизвестную систему (КИХ-фильтр). Чтобы подтвердить сходимость, сравните числитель КИХ-фильтра и предполагаемые веса адаптивного фильтра.
Предполагаемые веса фильтра тесно не совпадают с фактическими весами фильтра, подтверждая результаты, замеченные в предыдущем графике сигнала.
stem([(filt.Numerator).' w]) title('System Identification by Adaptive LMS Algorithm') legend('Actual filter weights','Estimated filter weights',... 'Location','NorthEast')
Как эксперимент, измените размер шага в 0,2. Повторение примера с mu = 0.2
результаты в следующей диаграмме стебель-листья. Фильтры не сходятся, и предполагаемые веса не являются хорошим approxmations фактического веса.
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')
Увеличьте формат кадра желаемого сигнала. Даже при том, что это увеличивает включенный расчет, LMS-алгоритм теперь имеет больше данных, которые могут использоваться в адаптации. С 1 000 выборок данных сигнала и размером шага 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')
Увеличьте число выборок данных далее путем введения данных через итерации. Запустите алгоритм на 4 000 выборок данных, переданных LMS-алгоритму в пакетах 1 000 выборок более чем 4 итерации.
Сравните веса фильтра. Веса фильтра LMS совпадают с весами КИХ-фильтра очень тесно, указывая на хорошую сходимость.
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')
Выходной сигнал совпадает с желаемым сигналом очень тесно, совершая ошибку между двумя близко к нулю.
plot(1:1000, [d,y,e]) title('System Identification of an FIR filter') legend('Desired','Output','Error') xlabel('Time index') ylabel('Signal value')
[1] Hayes, Монсон Х., Статистическая Цифровая обработка сигналов и Моделирование. Хобокен, NJ: John Wiley & Sons, 1996, pp.493–552.
[2] Haykin, Саймон, адаптивная теория фильтра. Верхний Сэддл-Ривер, NJ: Prentice-Hall, Inc., 1996.