vs_lab3x

advertisement
Нижегородский государственный технический университет
им. Р. Е. Алексеева
Кафедра «Вычислительные системы и технологии»
Вычислительные системы
Лабораторная работа №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[2fit  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
Download