Привет, сегодня поговорим про фильтры фарроу, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое
фильтры фарроу, farrow filters , фильтр третьего порядка, ресэмплинг, resampling , настоятельно рекомендую прочитать все из категории Цифровая обработка сигналов.
Для изменения частоты дискретизации, или для сдвига дискретного сигнала по фазе на величину меньшую интервала дискретизации, необходимо представить дискретный сигнал в виде непрерывной функции времени и произвести его повторную дискретизацию (resampling) или как еще говорят передискретизацию.
Пусть имеется

отсчетов дискретного сигнала

. Необходимо произвести
ресэмплинг и получить

отсчетов дискретного сигнала

как это показано на рисунке 1. Интервал дискретизации

. Черным показан исходный сигнал, красным - результат ресэмплинга.

Рисунок 1: Сигнал до и после ресэмплинга
Для того чтобы произвести ресэмплинг, необходимо по имеющемуся дискретному сигналу

произвести интерполяцию, т.е. восстановление непрерывного сигнала

затем рассчитать его дискретные значения для каждого нового

. Осуществлять интерполяцию можно различными способами, в данной статье речь пойдет о полиномиальной интерполяции.
Полиномиальная интерполяция. Представление полиномов
В курсе математического анализа доказывается, что через

точек проходит полином

степени

и при том только один. Например через две точки можно провести только одну прямую, через три точки только одну параболу и так далее. Соответственно через

также можно провести единственный полином степени

, который будет являться результатом интерполяции, то есть:
или  |
(1)
|
где

- коэффициенты полинома, которые необходимо рассчитать на основе отсчетов сигнала

Тогда подставляя нужные значения

можно произвести ресэмплинг.
Рассмотрим подробнее выражение (1), а именно раскроем сумму:
 |
(2)
|
Вынесем в выражении (2)

за скобки:
 |
(3)
|
Снова вынесем

за скобки:
 |
(4)
|
Таким образом вынося возможное количество раз

за скобки, получим множество вложенных скобок:
 |
(5)
|
Схема, позволяющая рассчитать значения полинома (5) при известных коэффициентах представлена на рисунке 2.

Рисунок 2: Расчет полинома для заданного

при известных коэффициентах
Первый умножитель выдает

потом прибавляется

получается «самые внутренние скобки» выражения (5)

. «самые внутренние скобки» умножаются на

и так далее собираются все скобки и получается

.
Рассмотрим пример для

. Получим кубический полином:
 |
(6)
|
Схема для расчета кубического полинома представлена на рисунке 3.

Рисунок 3: Схема расчета кубического полинома

Данная система может быть записана в матричной форме как:

Решение системы уравнений может быть получено в виде:
(8*)
где M — обратная матрица для матрицы M-1 .
Для решения задачи передискретизации необходимо по имеющемуся дискретному сигналу
, произвести восстановление непрерывного сигнала
и рассчитать его дискретные значения для моментов времени
, где
рассчитывается согласно (2).
Процесс передискретизации для частного случая 2 (компенсация дробной задержки) показан на рисунке 2.

Таким образом нам необходимо получить коэффициенты полинома

на основе дискретных отсчетов

. Для этого можно составить систему линейных уравнений:
 |
(7)
|
Однако это требует решения системы уравнений при каждом новом значении

. Об этом говорит сайт https://intellect.icu . Кроме того для решения системы уравнений требуется обращение матрицы, что невозможно обеспечить в реальном времени, так как для обращении матрицы требуется

операций умножения. Таким образом для построения кубического полинома при

требуется 64 умножения! Разумеется подобный подход не может быть применен на практике. Далее будет рассмотрен фильтр Фарроу (Farrow filter) построения кубического полинома при использовании всего трех умножений.
Ортогональные полиномы Лагранжа. Фильтр Фарроу
При построении фильтров Фарроу используются ортогональные полиномы Лагранжа. Тогда непрерывный сигнал

может быть представлен как сумма произведения своих отсчетов

на соответствующий полином Лагранжа

:
 |
(8)
|
Полином Лагранжа это полином степени

, равный единице при

, где

- момент дискретизации

- го отсчета и равный нулю в другие моменты дискретизации.
Полином третьей степени может быть построен по четырем точкам согласно выражению (8*).
Моменты дискретизации выбраны

. Каждый из полиномов равен единице в одном из моментов дискретизации и равен нулю в остальных (это отмечено маркерами).
Очень важно на данном этапе понять, что для

отсчетов сигнала используется

разных полиномов. Каждый полином Лагранжа может быть записан в виде:

|
(9)
|
где

и

моменты дискретизации.
Распишем полиномы Лагранжа для

и моментов дискретизации

:
 |
(10)
|
Полиномы Лагранжа:
 |
(11)
|
Подставим выражение для моментов дискретизации (10) в (11) и раскроем все скобки получим:
 |
(12)
|
Аналогично можно расписать полиномы Лагранжа для любого

.
Мы же доведем до конца синтез фильтров Фарроу для

с использованием кубических полиномов Лагранжа (12). При

выражение (8):
 |
(13)
|
Поскольку каждый из полиномов Лагранжа — кубический полином, то

в выражении (13) есть сумма кубических полиномов, а значит

также кубический полином с коэффициентами

,

.
Нам осталось только рассчитать данные коэффициенты. Подставим полиномы (12) в выражение (13):
 |
(14)
|
Раскрываем скобки и приводим подобные относительно степеней

, получим кубический полином:
 |
(15)
|
Коэффициенты которого равны:
 |
(16)
|
Каждый из коэффициентов кубического полинома (15) зависит от отсчетов исходного сигнала. При этом

зависят от четырех предыдущих значений. Таким образом коэффициенты полинома (15), в соответствии с формулой (16) можно получить используя КИХ-фильтры третьего порядка. На рисунке 5 показан пример расчета коэффициента полинома

при помощи КИХ-фильтра.

Рисунок 5: Расчет коэффициента полинома

при помощи КИХ-фильтра треьего порядка
Аналогично можно нарисовать структуры КИХ-фильтров для расчета остальных коэффициентов.
Ранее на рисунке 3 была представлена схема кубического полинома при известных коэффициентах. Мы выяснили, что коэффициенты полинома представляют собой фильтры третьего порядка. Теперь мы можем представить окончательную структуру фильтра Фарроу третьего порядка. Данная структура представлена на рисунке 6.

Рисунок 6: Фильтр Фарроу третьего порядка
Фильтры для расчета коэффициентов полинома на основе отсчетов сигнала представлены разными цветами:

– черным,

– красным

– синим,

– зеленым. Серым обозначены ветви с умножением на ноль, которые можно выбросить из схемы. По схеме нетрудно посчитать, что для расчета всех коэффициентов полинома требуется 9 нетривиальных умножений (умножения на ноль и

считаются тривиальными). Это уже не 64 как требуется для прямого решения системы уравнений, но еще и не три как было заявлено выше.
Модифицированный фильтр Фарроу
Давайте оптимизируем приведенную на рисунке 6 структуру. Для этого рассмотрим внимательно выражение для коэффициентов полинома (16). Нетрудно заметить, что:
 |
(17)
|
К тому же можно обратить внимание:
 |
(18)
|
Тогда из (18) следует что
 |
(19)
|
Смотрим дальше:
 |
(20) |
Тогда из (20) следует:
 |
(21)
|
Тогда выражения для коэффициентов полинома можно представить в виде:
 |
(22)
|
Как и было заявлено всего три умножения! Схема реализующая расчет полинома на основе (22) носит название модифицированного фильтра Фарроу, представлена на рисунке 7.

Рисунок 7: Модифицированный фильтр Фарроу третьего порядка
На первом этапе формируется коэффициент

(черные ветви), далее он используется для расчета коэффициента

, синие ветви. Далее коэффициенты

и

используются для расчета

. Коэффициент

просто снимается после второй задержки.
На этом синтез фильтра Фарроу третьего порядка можно считать законченным и подведем некоторые итоги:
1. Синтезирован фильтр Фарроу третьего порядка позволяющий получить значение непрерывного сигнала в любой момент времени на основе полиномиальной интерполяции.
2.
фильтр третьего порядка требует всего 3 операции умножения и может применяться в реальном времени.
До данного момента мы ничего не сказали о значении

, которое требуется задавать для расчета

. Фильтр синтезировался исходя из следующих начальных данных: имеется 4 отсчета, взятые в моменты времени

. Соответственно, для того чтобы получить значение полинома

значение

должно быть в интервале от -2 до 1, при этом

соответствует моменту дискретизации

, а

соответствует моменту дискретизации

. Значение

должно быть пересчитано в интервал от -2 до 1.
Примеры ресэмплинга
Рассмотрим пример. Пусть имеется 4 отсчета сигнала

,

,

,

, взятые с частотой дискретизации 1 кГц, т.е.

сек ,

сек,

сек и

сек (рисунок 8). Рассчитать значение сигнала в момент времени

cек.

Рисунок 8: Нормировка шкалы времени
Нормировка шкалы осуществляется по следующей формуле:
 |
(23)
|
В нашем случае:
 |
(24) |
Рассчитаем коэффициенты полинома на основе модифицированного фильтра Фарроу третьей степени (22):
 |
(25)
|
Тогда значение сигнала в момент времени

равно:
 |
(26)
|
На рисунке 9 показан полином и значение полинома в заданной точке.
Рисунок 9: Пример расчета на основе фильтра Фарроу
Необходимо отметить, что используя такой подход нельзя рассчитывать значения за интервалом взятия четырех отсчетов т.е.

Или

. В предыдущем примере нельзя рассчитывать по данным четырем отсчетам значение сигнала например для

, так как

. Точнее рассчитать конечно можно, но значение не будет соответствовать действительности. С наибольшей точностью значения сигнала рассчитываются при нормированной

от -1 до 0. На практике необходимо стремиться вести пересчет шкалы времени именно в интервал от -1 до 0.
Для изменения частоты дискретизации необходимо произвести пересчет времени для моментов дискретизации в интервал от -1 до 0. На рисунке 10 приведен пример ресэмплинга для сигнала с частотой 3 кГц (красный график), оцифрованного с частотой дискретизации 20 кГц на частоту 24 кГц (синий график).
Рисунок 10: Пример ресэмплинга сигнала при помощи фильтра Фарроу 3 порядка
Выводы
В результате анализа было определено, что после ресэмплинга на один период колебания приходится целое число отсчетов (8 штук), в то время как до ресэмплинга наблюдались искажения вызванные нецелым количеством отсчетов на период колебания. Поскольку частота дискретизации увеличилась с 20 до 24 кГц (в 6/5 раз), то каждый шестой отсчет после ресэмплинга совпадает с каждым пятым отсчетом до ресэмплинга (помечены маркерами).
Таким образом, в статье приведен порядок расчета фильтра Фарроу на примере фильтра третьего порядка. Произведена модификация фильтра с целью сокращения вычислительных операций. Показан пример ресэмплинга сигнала для дробного изменения частоты дискретизации
Вау!! 😲 Ты еще не читал? Это зря!
Надеюсь, эта статья про фильтры фарроу, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое фильтры фарроу, farrow filters , фильтр третьего порядка, ресэмплинг, resampling
и для чего все это нужно, а если не понял, или есть замечания,
то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Цифровая обработка сигналов
Комментарии
Оставить комментарий
Цифровая обработка сигналов
Термины: Цифровая обработка сигналов