Фильтр Фарроу цифровой передискретизации сигналов на основе сплайн-интерполяции

Содержание
Введение
В предыдущем разделе мы рассмотрели цифровые передискретизаторы на основе кусочно-полиномиальной интерполяции Лагранжа. Было получено выражение для коэффициентов полинома в виде:
\begin{equation*} \begin{array} & \mathbf{a} = \mathbf{M^{-1}} \cdot \mathbf{s} = \left[ \begin{array}{cccc} 0 & 0 & 1 & 0\\ \frac{1}{6} & -1 & \frac{1}{2} & \frac{1}{3}\\ 0 & \frac{1}{2} & -1 & \frac{1}{2}\\ -\frac{1}{6} & \frac{1}{2} & -\frac{1}{2}& \frac{1}{6}\\ \end{array} \right] \cdot \left[ \begin{array}{c} s(n-3) \\ s(n-2) \\ s(n-1) \\ s(n)\\ \end{array} \right], \end{array} \end{equation*}
(1)
где $\mathbf{a}-$вектор коэффициентов полинома, $\mathbf{M^{-1}}-$обратная матрица системы, $\mathbf{s}-$вектор задержанных отсчетов входного сигнала.
В результате минимизации умножителей были получены выражения для коэффициентов полинома:
$$ \begin{cases} a_0 = s(n-1),\\ a_3= \frac{1}{6} \cdot \left( s(n) - s(n-3)\right) + \frac{1}{2} \cdot \left( s(n-2) - s(n-1)\right), \\ a_1 = \frac{1}{2} \cdot \left( s(n) - s(n-2) \right)-a_3,\\ a_2 = s(n) - s(n-1) - a_1 - a_3.\\ \end{cases} $$
(2)
Структурная схема оптимизированного фильтра цифровой передискретизации сигналов на основе кусочно-полиномиальной интерполяции Лагранжа, соответствующая (2), приведена на рисунке 1.
Рисунок 1. Структурная схема оптимизированного фильтра цифровой передискретизации
Таким образом, мы получили структуру фильтра, который рассчитывает коэффициенты интерполяционного полинома Лагранжа с использованием всего одного умножителя на $\frac{1}{6}$ и двух тривиальных умножителей на $\frac{1}{2}$.
Также мы детально рассмотрели примеры использования фильтра Фарроу для задач цифровой передискретизации сигналов, включая цифровую компенсацию дробной задержки и интерполяции сигналов.
При рассмотрении примеров мы упомянули, что импульсная характеристика $h(n)$ фильтра Фарроу при цифровой интерполяции сигналов не имеет непрерывной производной в узлах интерполяции. Как следствие, уровень подавления в полосе заграждения полученного фильтра составляет всего 28 дБ, как это показано на рисунке 2.
Рисунок 2. Импульсная характеристика и АЧХ фильтра Фарроу цифровой интерполяции
Помимо интерполяции Лагранжа существуют и другие методы кусочно-полиномиальной интерполяции, например сплайн-интерполяция [1], которая обеспечивает непрерывные производные в узлах интерполяции, в отличие от полиномиальной интерполяции Лагранжа.
В данном разделе мы рассмотрим построение фильтра Фарроу на основе сплайнов Эрмита [1].
Построение кубического сплайна Эрмита
При построении кубического полинома Лагранжа используется четыре отсчета сигнала $s(n) \ldots s(n-3)$ и полученный интерполяционный полином $p(t)$ проходит через эти узлы, как это показано на рисунке 3а.
Рисунок 3. Построение интерполяционных полиномов: а - кубический полином Лагранжа б - кубический сплайн Эрмита
Однако такое построение полинома не накладывает ограничений на значения производных в крайних точках $t = 1$ и $t = -2$. В результате возникают разрывы производной импульсной характеристики фильтра интерполятора, как это показано на рисунке 2.
Для обеспечения непрерывности производной при «стыковке» кубических полиномов мы будем использовать кубический сплайн Эрмита, который строится в интервале $t = [-1 \ldots 0]$, как это показано на рисунке 3б.
Расчет коэффициентов сплайна Эрмита мы будем вести путем решения системы линейных уравнений. Из рисунка 3б следует два уравнения системы:
\begin{eqnarray*} { \begin{cases} p(0)= s(n-1), \\ p(-1) = s(n-2); \end{cases} } & \Longrightarrow & { \begin{cases} a_0 + a_1 \cdot 0 + a_2 \cdot 0^2 + a_3 \cdot 0^3 = s(n-1), \\ a_0 + a_1 \cdot (-1) + a_2 \cdot (-1)^2 + a_3 \cdot (-1)^3 = s(n-2). \end{cases} } \end{eqnarray*}
(3)
Необходимо добавить еще два уравнения в систему (3). Для этого потребуем, чтобы производные сплайна Эрмита $p^\prime(t)$ в узлах $t = 0$ и $t = -1$ были равны производным входного сигнала $s^\prime(n)$ в этих точках, т.е.
\begin{eqnarray*} { \begin{cases} p^\prime(0)= s^\prime(n-1), \\ p^\prime(-1) = s^\prime(n-2); \end{cases} } & \Longrightarrow & { \begin{cases} a_1 + 2 \cdot a_2 \cdot 0 + 3 \cdot a_3 \cdot 0^2 = s^\prime(n-1), \\ a_1 + 2 \cdot a_2 \cdot (-1) + 3\cdot a_3 \cdot (-1)^2 = s^\prime(n-2). \end{cases} } \end{eqnarray*}
(4)
Объединяя уравнения (3) и (4) в единую систему уравнений для расчета коэффициентов кубического сплайна Эрмита, получим:
\begin{equation*} \begin{cases} a_0 &+ & a_1 \cdot 0 + a_2 \cdot 0^2 + a_3 \cdot 0^3 & = s(n-1), \\ a_0 & + & a_1 \cdot (-1) + a_2 \cdot (-1)^2 + a_3 \cdot (-1)^3 & = s(n-2), \\ & & a_1 + 2 \cdot a_2 \cdot 0 + 3 \cdot a_3 \cdot 0^2 & = s^\prime(n-1), \\ & & a_1 + 2 \cdot a_2 \cdot (-1) + 3\cdot a_3 \cdot (-1)^2 & = s^\prime(n-2), \end{cases} \end{equation*}
(5)
Или в матричной форме:
\begin{equation*} \begin{array} & \mathbf{M \cdot a = s} & \Longrightarrow & \left[ \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 1 & -1 & 1 & -1 \\ 0 & 1 & 0 & 0\\ 0 & 1 & -2 & 3 \end{array} \right] & \cdot & \left[ \begin{array}{cccc} a_0 \\ a_1 \\ a_2 \\ a_3 \end{array} \right] & = & \left[ \begin{array}{cccc} s(n-1) \\ s(n-2) \\s^\prime(n-1) \\ s^\prime(n-2) \end{array} \right]. \end{array} \end{equation*}
(6)
Тогда решение системы (6) можно представить как:
\begin{equation*} \begin{array} & \mathbf{ a = M^{-1} \cdot s} & \Longrightarrow & \left[ \begin{array}{cccc} a_0 \\ a_1 \\ a_2 \\ a_3 \end{array} \right] & = & \left[ \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -3 & 3 & 2 & 1\\ -2 & 2 & 1 & 1 \end{array} \right] & \cdot & \left[ \begin{array}{cccc} s(n-1) \\ s(n-2) \\s^\prime(n-1) \\ s^\prime(n-2) \end{array} \right]. \end{array} \end{equation*}
(7)
После умножения обратной матрицы $\mathbf{M^{-1}}$ на вектор $\mathbf{s}$ получим выражения для коэффициентов кубического сплайна Эрмита в виде:
\begin{equation*} \begin{cases} a_0 = s(n-1), \\ a_1 = s^\prime(n-1), \\ a_2 = -3 \cdot s(n-1) + 3 \cdot s(n-2) + 2 \cdot s^\prime(n-1) + s^\prime(n-2), \\ a_3 = -2 \cdot s(n-1) + 2 \cdot s(n-2) + s^\prime(n-1) + s^\prime(n-2). \end{cases} \end{equation*}
(8)
Таким образом, мы получили выражения для коэффициентов кубического сплайна Эрмита. При этом коэффициенты зависят от значений производных сигнала $s^\prime(n-1)$ и $s^\prime(n-2)$, которые мы должны оценить исходя из отсчетов входного сигнала.
Оценка значений производной дискретного сигнала
Задача численного дифференцирования дискретно заданных сигналов решается при использовании аппроксимации производной сигнала конечными разностями. Наиболее простой аппроксимацией производной является конечная разность вида:
$$ s^\prime(n-1) \approx s(n-1) - s(n-2), \\ s^\prime(n-2) \approx s(n-2) - s(n-3). $$
(9)
Оценка производных (9) производится при использовании линейной интерполяции входного сигнала. Данный метод требует всего одно вычитание, однако имеет наибольшую погрешность, поскольку остаточный член при оценке производной (9) равен $O(h)$ [2], т.е. линейно уменьшается с уменьшением шага дискретизации.
Более точными методами оценки производной является метод центральной разности:
$$ s^\prime(n-1) \approx \frac{s(n) - s(n-2)}{2}, \\ s^\prime(n-2) \approx \frac{s(n-1) - s(n-3)}{2}. $$
(10)
Центральная разность вытекает из оценки производной с использованием параболической интерполяции входного сигнала, и остаточный член при оценке производной (10) равен $O(h^2)$ [2], т.е. уменьшается квадратично при уменьшении шага дискретизации $h$.
При этом центральная разность (10) требует дополнительного умножения на $\frac{1}{2}$, которое можно реализовать в целочисленной арифметике как сдвиг на один разряд вправо.
Таким образом, мы можем использовать оценку производной (10) в выражении (8) для расчета коэффициентов сплайна Эрмита и обеспечить непрерывность производной на выходе фильтра цифровой передискретизации.
Оптимизированная структура фильтра Фарроу на основе сплайнов Эрмита
Подставим (10) в (8) и получим выражения для коэффициентов сплайна Эрмита в виде:
\begin{equation*} \begin{cases} a_0 = s(n-1), \\ a_1 = \frac{1}{2}\cdot (s(n) - s(n-2)), \\ a_2 = -3 \cdot s(n-1) + 3 \cdot s(n-2) + s(n) - s(n-2) + \frac{1}{2}\cdot (s(n-1) - s(n-3)), \\ a_3 = -2 \cdot s(n-1) + 2 \cdot s(n-2) + \frac{1}{2}\cdot (s(n) - s(n-2)) + \frac{1}{2}\cdot (s(n-1) - s(n-3)). \end{cases} \end{equation*}
(11)
Из выражения (11) можно заметить, что:
$$ a_2 - a_3 = -s(n-1) + s(n-2) + \underbrace{\frac{1}{2}\cdot (s(n) - s(n-2))}_{a_1}, $$
(12)
тогда
$$ a_2 = s(n-2)-s(n-1) + a_3 + a_1, $$
(13)
и окончательно можно записать:
$$ \begin{cases} a_0 = s(n-1), \\ a_1 = \frac{1}{2}\cdot \Big(s(n) - s(n-2)\Big), \\ a_3 = 2 \cdot \Big(s(n-2) - s(n-1)\Big) + a_1 + \frac{1}{2}\cdot \Big(s(n-1) - s(n-3)\Big), \\ a_2 = s(n-2)-s(n-1) + a_3 + a_1. \end{cases} $$
(14)
Расчет коэффициентов сплайна Эрмита требует только умножения на $2$ и $\frac{1}{2}$, которые можно считать тривиальными. Кроме того мы можем избавиться от умножения на $\frac{1}{2}$ при расчете $a_3$, если учтем, что $\frac{1}{2}\cdot \Big(s(n-1) - s(n-3)\Big)$ не что иное, как задержанное на один такт значение $a_1 = \frac{1}{2}\cdot \Big(s(n) - s(n-2)\Big)$.
Структурная схема оптимизированного фильтра цифровой передискретизации на основе кубических сплайнов Эрмита показана на рисунке 4.
Рисунок 4. Оптимизированный фильтр цифровой передискретизации на основе кубических сплайнов Эрмита
Сравнивая рисунки 1 и 4, можно заметить, что оптимизированный фильтр цифровой передискретизации на основе кубических сплайнов Эрмита требует всего лишь одного тривиального умножения на $\frac{1}{2}$ (умножение на 2 можно заменить одним сумматором), в то время как фильтр на основе полиномиальной интерполяции Лагранжа требует два тривиальных умножения на $\frac{1}{2}$ и один умножитель на $\frac{1}{6}$. Общее количество сумматоров, требуемых для расчета коэффициентов, также меньше при использовании кубических сплайнов Эрмита.
Выводы
В данном разделе рассмотрена структура фильтра Фарроу цифровой передискретизации сигналов на основе кубических сплайнов Эрмита. Также рассмотрен вопрос оценки значений производной входного сигнала для обеспечения непрерывной производной при использовании кубических сплайнов Эрмита.
Полученный фильтр цифровой передискретизации требует только одного умножения на $\frac{1}{2}$, которое можно считать тривиальным. Общее количество сумматоров, требуемых для расчета коэффициентов полинома, также меньше при использовании кубических сплайнов Эрмита по сравнению с полиномиальной интерполяцией Лагранжа.
В следующем разделе мы рассмотрим примеры использования фильтра Фарроу цифровой передискретизации сигналов на основе кубических сплайнов Эрмита и сравним результаты использования с фильтром передискретизации сигналов на основе полиномиальной интерполяции Лагранжа.

Ваши комментарии, вопросы и пожелания вы можете оставить на форуме или в гостевой книге.
Список литературы
[1] Каханер Д., Моулер К., Нэш С. Численные методы и математическое обеспечение. Москва, Мир, 1998.

[2] Самарский А.А., Гулин А.В. Численные методы. Москва, Наука. Гл. ред. физ-мат. лит., 1989.

[3] Farrow C.W. A Continuously Variable Digital Delay Element. Circuits and Systems, IEEE International Symposium. 1988, p. 2641–2645. vol. 3

[4] Gardner Floyd M. Interpolation in Digital Modems-Part I: Fundamentals: IEEE Transactions on Communications, Vol. 41, No. 3, March 1993, P. 501-507.

[5] Erup L., Gardner Floyd M., Harris Robert A. Interpolation in Digital Modems-Part II: Implementation and Performance: IEEE Transactions on Communications, Vol. 41, No. 6, June 1993, p.998-1008.

[6] Franck A. Efficient Algorithms for Arbitrary Sample Rate Conversion with Application to Wave Field Synthesis. PhD thesis. Universitätsverlag Ilmenau, Ilmenau, 2012. [PDF]

[7] Макконелл Дж. Основы современных алгоритмов. Москва, Техносфера, 2004.


Oбнаружили ошибку в тексте? Выделите ее мышкой и нажмите