Система идентификации является процессом идентификации коэффициентов неизвестной системы с помощью адаптивного фильтра. Общий обзор процесса показан на Систему идентификации - Использование адаптивного фильтра для идентификации неизвестной системы. Основными компонентами являются:
Алгоритм адаптивного фильтра. В этом примере установите 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
Результаты следующими диаграммами лист-ствол. Фильтры не сходятся, и предполагаемые веса не являются хорошими приближениями фактических весов.
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-алгоритм теперь имеет больше данных, которые могут использоваться для адаптации. При 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')
Увеличьте количество выборок данных дополнительно путем ввода данных через итерации. Запустите алгоритм на 4000 выборках данных, переданных в LMS-алгоритм пакетами 1000 выборки в 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, 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.