
В составе MATLAB имеется специальная
функция для конструирования объектов
КИХ – фильтра со стандартным (прямым)
алгоритмом РНК. Её синтаксис ha
= adaptfilt.rls(l, lambda, invconv, coeffs, states).Входные аргументы функции:
l
– длина адаптивного фильтра (число
коэффициентов), по умолчанию равно 10,
lambda– значение коэффициента забывания,
его значение должно быть в интервале
(0, 1], значение по умолчанию равно 1,
invcov–
инверсная корреляционная матрица
входного сигнала, её значения
coeffs
– вектор начальных значений
коэффициентов фильтра длиныl,
по умолчанию – нулевой вектор,
states– вектор начального состояния фильтра,
его длина равнаl-1,
по умолчанию – нулевой вектор.
Как уже отмечалось ранее, данная функция
в значении haвозвращает объект,
имеющий набор свойств:
Свойства Coefficients,FilterLength,ForgettingFactor,InvCov,Statesсоответствуют аналогичным входным
параметрам фильтра, свойство Algorithm
определяет алгоритм фильтра, свойство
PersistentMemory с возможными значениями false
или true устанавливает возможность
запоминания значений состояния фильтра
для новой операции фильтрации.
Пример обращения к свойству: ha.
ForgettingFactor.
Функция adaptfilt.Rls matlab
должны соответствовать положительно
определенной матрице, т.е.
- это достаточно большая положительная
константа,
–
единичная матрица,
Пример. Рассмотрим задачу адаптивного
подавления (компенсации) шума в
гармоническом сигнале с применением
стандартного РНК - алгоритма. Структурная
схема адаптивного фильтра
На вход адаптивного
фильтра подается сигнал помехи (шум)
x(k), на
вход желаемого сигнала - сумма d(k)
= s(k)+n(k)
полезного
сигнала и помехи n(k),
коррелированной с помехой x(k]).
Cигналы
s(k)и
x(k)
– должны быть не коррелированны друг
с другом. В процессе адаптации адаптивный
алгоритм настраивает коэффициенты
фильтра таким образом, чтобы свести к
минимуму среднеквадратичную ошибку
фильтра e(k).
В данной задаче
полезный сигнал s(k)
– гармоника с единичной амплитудой.
На вход адаптивного фильтра подается
белый шум x(k),
полученный с помощью стандартной
функции randn. Шум на желаемом входе dk
формируется из исходного белого шума
пропусканием его через КИХ – фильтр.
В результате получается шум,
коррелированный с шумом на входе
фильтра.
Адаптивный фильтр
– это стандартный РНК- фильтр,
конструируемый функцией
adaptfilt.rls().
В примере это фильтр с 32 коэффициентами,
коэффициент забывания принят равным
0,98.
Программа модели
находится в Приложении
1. Результаты
моделирования показаны на нижеследующем
рисунке.
d(k)
Еще раз напомним,
что сходимостью алгоритма адаптивной
фильтрации называют процесс минимизации
мощности ошибки фильтра. Быстрая
сходимость означает, что адаптивному
фильтру требуется немного времени для
минимизации ошибки.
Алгоритм МНК –
простой, но его сходимость оставляет
желать лучшего. По сравнению с МНК
рекурсивный алгоритм имеет лучшую
сходимость, но требует значительно
больших вычислительных ресурсов:
4N2
+ 4N умножений и 3N2
сложений/вычитаний
на одну итерацию.
Скорость сходимости
адаптивного фильтра можно отслеживать
по кривой обучения, которая представляет
собой зависимость средней ошибки
фильтра от номера (шага) итерации.
Теоретическая кривая обучения
предполагает усреднение по бесконечному
числу реализаций сигнала, практически
достижимая – по конечному. В литературе
по адаптивной фильтрации показано, что
среднее значение априорной ошибки РНК-
фильтра на шаге с номером k
следует выражению
где
Сопоставление
сходимости методов МНК и РНК проведем
на рассмотрении задачи идентификации
неизвестной системы, в качестве которой
возьмем КИХ – фильтр 31 –го порядка (32
коэффициента). Для вычисления кривых
обучения фильтров РНК и МНК будем
использовать функцию msesim() MATLAB, подробно
рассмотренную в лекции №4. В данном
примере число реализаций сигнала для
усреднения равно 20.
Число шагов итераций
возьмем равным 1000, длину адаптивного
фильтра равной 32 коэффициентам, значение
шага сходимости для алгоритма МНК
μ=0,005, для алгоритма РНК значение
коэффициента забывания
Скорость сходимости рекурсивного алгоритма наименьших квадратов
,
- минимальная (предельная) среднеквадратичная
ошибка фильтра ,
-
коэффициент забывания.
= 0,98. Программа (скрипт-файл) находится
в Приложении 2 .
Из полученных здесь
результатов следует, что метод РМНК
показал в данной задаче по крайней мере
в 6 раз более высокую скорость сходимости,
чем алгоритм МНК. Следует иметь в виду
зависимость сходимости РНК – фильтра
от значения коэффициента забывания,
т.е. выбором
можно улучшить сходимость.
Использование qr –
разложения в РМНК - алгоритме адаптивной
фильтрации позволяет повысить
устойчивость и во многих случаях, но
не всегда - точность рекурсивного
алгоритма.
Для реализации
рекурсивного алгоритма с использованием
qr – разложения в MATLAB имеется специальная
функция H =
ADAPTFILT.QRDRLS(L,LAMBDA,SQRTCOV,COEFFS,STATES). Её входные
параметры:
L
- длина адаптивного фильтра,
LAMBDA – коэффициент
забывания фильтра,
SQRTCOV – коэффициенты
верхней треугольной матрицы входного
сигнала, инициализируется как положительно
определенная верхняя треугольная
матрица,
COEFFS – вектор
начальных значений коэффициентов длины
L,
по умолчанию – нулевой вектор,
STATES – вектор
начального состояния фильтра, по
умолчанию нулевой вектор из L-1
элементов.
Ниже приведены
результаты моделирования задачи
идентификации КИХ – фильтра с 16 –
ю коэффициентами с использованием
стандартного алгоритма РМНК и алгоритма
на основе QR - разложения корреляционной
матрицы. Результаты представлены в
виде графиков кривой обучения для того
и другого случая.
Видно, что на
визуальном уровне кривые обучения
практически идентичны, но главное
преимущество QR РМНК алгоритма в его
значительно лучшей устойчивости в
соответствующих задачах. Но это не
дается даром. Число операций умножения
на одну итерацию для этого алгоритма
5N2+9N,
в то время как в стандартном РНК 2N2+4N.
Скрипт – файл
процедуры – в приложении 3. Как следует
из результатов, в этом частном случае
QR РМНК алгоритма не дал каких – либо
преимуществ по точности по сравнению
со стандартным РМНК. Но его главное
назначение – предотвращение возможной
неустойчивости.