Нижегородский государственный технический университет им. Р. Е. Алексеева Кафедра «Вычислительные системы и технологии» Вычислительные системы Лабораторная работа №3 Настройка дискретного прогнозирующего фильтра по алгоритму RLS Выполнил студент группы М14-ИВТ-3: Сидоренко О.О. Проверил: Саладаев Е. Н. г. Нижний Новгород 2014 Задание. Вариант №13 Количество гармоник в прогнозируемом процессе (наблюдаемом сигнале) m = 5. Частота первой гармоники f1 = 5 кГц. Амплитудный спектр наблюдаемого сигнала Um(i), i=1,2,…….m. i Um(i) 1 1 2 0,8 3 0,5 4 0,3 5 0,1 Среднеквадратичное значение помехи SQE = 0,01. Длительность интервала (количество отсчетов сигнала) настройки М = 1000. Частота дискретизации прогнозируемого процесса Fd = 500 кГц. Время (интервал) прогнозирования Т = 1. Длительность интервала проверки качества прогнозирования L = 1000. 1. Формирование прогнозируемого процесса. Формируем информативный сигнал X(t) по заданным выше параметрам. Помимо этого необходимо вычислить амплитуды гармоник сигнала и их фаз. Все пять гармоник сформированы случайным образом при использовании амплитудного спектра. Код вычисления амплитуды и фазы: Модель информативного сигнала при формировании прогнозируемого процесса представим в виде: m S (t ) A(i ) * Cos[2fit faz(i )] i 1 где: A(i) – амплитуда i-ой гармоники, faz(i) – фаза i-ой гармоники, а fi- частота iой гармоники. Вычислим массив отсчетов информативного сигнала S(t) следующим образом: 2 Массив отсчетов наблюдаемого процесса вычисляется по формуле X(k) = S(k) + E(k), где E(k) – случайная величина с мат.ожиданием равным нулю и дисперсией DE = SQE^2. Вычислим этот массив отсчетов: Выведем на графике получившиеся сигналы: Здесь среднеквадратичная помеха заметно мала, поэтому зашумленный сигнал практически не отличается от истинного. 3 2. Реализация алгоритма прогнозирования. Необходимо задать два вектора размерностью N+1, где N – порядок фильтра. W 0 W 1 – вектор цифрового фильтра, где на начальном этапе все значения W W N равны 0. Затем нужно организовать цикл от N до Km, в котором будут производиться следующие вычисления.. Вычислим выходной сигнал фильтра: T Y k U k * W , где U(k) – вектор сигнала размерности N+1и представляется как X k X k 1 U k X k j X k N Таким образом, выходной сигнал фильтра можно записать как N Y k W j * X k j j 0 Положим, M{ (k)}=0, тогда желаемый сигнал выведется как: d(k) =S(k+T)=M(S(k+T) + (k+T)}=M{X(k+T}, где Т – время прогнозирования. Далее необходимо подсчитать ошибку по формуле: 𝑒(𝑘) = 𝑑(𝑘) − 𝑌(𝑘) ≈ 𝑋(𝑘 + 𝑇) − 𝑌(𝑘). Введём матрицу P размерность NxN, которая является оценкой обратной корреляционной матрицы R. Причем исходный вид матрицы P следующий: 100 0 0 … 0 0 100 0 0 0 𝑃= ⋮ 0 ⋱ 0 ⋮ 0 0 0 100 0 100) 0 … 0 ( 0 Введем также вектор ⃗⃗⃗⃗⃗ 𝐾𝑦, размерности N+1. P *U (k ) Причем Ky , где числитель можно преобразовать в вектор 𝐶 , 1 U T ( k ) * P *U (k ) N размерности N+1 и равный: С (i) P(i, j ) * X (k j ) , где i лежит на отрезке от 0 до j 0 N. ⃗⃗⃗⃗⃗𝑇 (𝑘) ∗ 𝑃, А знаменатель выражения можно преобразовать в вектор 𝑍 = 𝑈 размерности N+1 и тогда весь знаменатель равен N 1 Z *U (k ) Z ( j ) * X (k j ) 1 sum . j 0 4 𝐶(𝑖) Тогда вектор ⃗⃗⃗⃗⃗ 𝐾𝑦 можно найти следующим образом: 𝐾𝑦(𝑖) = , где i лежит на 𝑠𝑢𝑚 отрезке от 0 до N. Далее необходимо обновить оценку обратной корреляционной матрицы P: T T P P Ky * U (k ) * P , где Ky * U (k ) dP , матрица размерности (N+1)x(N+1). Её можно вычислить следующим образом: dP(i, j ) Ky(i) * X (k j ) . Тогда всё выражение примет вид P P dP * P . И в конце цикла необходимо пересчитать коэффициенты W фильтра по формуле: W W Ky * e(k ) , т.е. W (i ) W (i ) Ky(i ) * E (k ) Код функции, выполняющей эти действия представлен ниже: Отобразим на графике первые 500 отсчетов прогнозируемого значения Y: 5 Заметно, что прогнозируемое значение расходится с идеальным, это говорит о том, что происходит постепенная настройка фильтра и значения ещё не сошлись к необходимому. Отобразим последние 500 отсчетов значения Y: К этому времени значения фильтра сошлись к необходимому и можно заметить совпадения прогнозируемого значения с идеальным значением. Настраиваемые значения вектора параметров фильтра W(0), W(l),..,W(N+1) выводятся с некоторым коэффициентом децимации Kd в пределах 100 - 1000, т.е. из Kd значений вектора W(k) выводится одно. Было взято значение Kd=100. Настройка параметров фильтра LMS W(0), W(l), ... W(N). График настройки: 6 Из графика видно, что каждые Kd отсчетов значения фильтра сходятся к оптимальному значению. Проанализировав график, видим, что устойчивость начинается чуть середины графика. 7 3. Оценка качества прогнозирования. На основе полученных значений Y(k-T) и S(k) вычисляется ошибка прогнозирования значения S(k): dY(k) = Y(k-T) - S(k). Отобразим первые 500 отсчетов ошибки прогнозирования: Отобразим последние 500 отсчетов ошибки: Видно, что по мере настройки фильтра, значение ошибки прогнозирования уменьшаются и в конце концов сводится к значению в области [-0,0005;0,0005] После расчёта ошибки прогнозирования, необходимо определить значение текущей оценки среднеквадратичной погрешности на интервале Kd по формуле: SQdYKd k 1 Kd 1 dY k i 2 Kd i 0 Отобразим график для значений оценки: Видно, что среднеквадратичная оценка ошибки сводится к значению, близкому к 0.0002. 8 4. Вывод. Основное достоинство алгоритма – небольшое время настройки фильтра. Оно значительно отличается от довольно большого времени при фильтре LMS. Однако алгоритм достаточно трудоемок. 9