Лекция
Привет, сегодня поговорим про линейная свертка, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое линейная свертка, циклическая свертка , настоятельно рекомендую прочитать все из категории Цифровая обработка сигналов.
Свертка — операция в функциональном анализе, которая при применении к двум функциям и возвращает третью функцию, соответствующую взаимнокорреляционной функции и . Операцию свертки можно интерпретировать как «схожесть» одной функции с отраженной и сдвинутой копией другой. Понятие свертки обобщается для функций, определенных на произвольных измеримых пространствах и может рассматриваться как особый вид интегрального преобразования.
Свертка последовательностей — это результат перемножения элементов двух заданных числовых последовательностей таким образом, что члены одной последовательности берутся с возрастанием индексов, а члены другой — с убыванием (что и служит основанием для принятого названия данной операции).
Свертка последовательностей — это частный случай свертки функций.
Свертка является линейным преобразованием входящих в нее последовательностей.
Свертку двух заданных последовательностей можно получить, если, сначала, использовать для каждой последовательности дискретное преобразование Фурье (ДПФ), затем перемножить результаты преобразования и произвести обратное дискретное преобразование Фурье (обратное ДПФ). Это важное свойство находит свое широкое применение в цифровой обработке сигналов.
К традиционным типам сверток относятся:
Линейная свертка описывает прохождение сигнала , через КИХ-фильтр порядка с импульсной характеристикой , :
В выражении (5) пределы суммирования соответствуют длительности импульсной характеристики КИХ фильтра, так как при и .
Другим важнейшим прикладным значением линейной свертки является расчет произведения полиномов.
Пусть значения дискретной последовательности , , содержащей значение представляет собой коэффициенты полинома :
степени , а значения дискретной последовательности , — содержит коэффициентов полинома
степени . Тогда коэффициенты произведения полиномов будут равны линейной свертке . В результате мы получим коэффициент полинома степени .
Пусть имеется две последовательности и , одинаковой длительности отсчетов. Циклической сверткой называется последовательность вида:
Вычислительные преимущества, которые мы получаем при использовании аппарата БПФ для расчета циклической свертки, хотелось бы также получать и для расчета линейной свертки. С этой целью рассмотрим способ приведения линейной свертки последовательностей ограниченной длительности к циклической.
Пусть и — дискретные последовательности длительности и отсчетов соответственно. Линейная свертка последовательностей и вернет длительности отсчет. Если мы хотим получить как результат циклической свертки, то необходимо дополнить и до длины отсчет, как это показано на рисунке 7.
К последовательности необходимо добавить ноль, а к последовательности — ноль. такое добавление нулей обеспечит увеличение периодичности циклического буфера до размера, когда и перестанут перекрываться циклически. В результате циклическая свертка будет иметь вид:
Можно показать, что циклическая свертка (15) дополненных нулями последовательностей, соответствует расчету линейной свертки исходных сигналов. Чтобы убедиться в этом, достаточно использовать матричную запись циклической свертки, и расписать соответствующие элементы , . В результате выражения будут соответствовать линейной свертке.
Необходимо заметить, что добивать и нулями можно не только до длины , но и до любой длины . В результате вычисления циклической свертки дополненных нулями последовательностей до длины , первый значение на выходе будет представлять собой линейную свертку, а остальные значения будут нулевыми. Это можно использовать для дополнения исходных последовательностей нулями до длины, которая допускает использование эффективных БПФ алгоритмов.
Например при и , необходимо дополнить и нулями до длины . Однако мы можем дополнить их до длины отсчетов и использовать БПФ по основанию два для расчета циклической свертки. При этом первые 6999 отсчетов результата циклической свертки будут представлять собой линейную свертку при и . Использование алгоритма БПФ для приведет к десятикратному снижению требуемых вещественных умножителей при вычислении линейной свертки при и .
Сверточные коды позволяют исправлять пакеты ошибок путем введения в код цифр контроля четности. Выходы триггеров регистра сдвига обеспечивают задержки и подаются в отводы, после чего соответствующим образом объединяются с использованием сумматоров по модулю 2. В результате получается несколько выходов, которые последовательно считываются в каждом такте (рис. 5.39). Система является причинной и нерекурсивной, производит выход, который зависит от ее предыдущих входов, и сворачивает новые входные данные со своей импульсной характеристикой.
Рис. 5.39. Сверточный кодер
Вход всех систем сворачивается с импульсной характеристикой системы и может искажать выход. Это происходит, например, в системах телекоммуникаций и может принуждать использовать эквалайзер — линейный фильтр, который по выходу восстанавливает исходный сигнал. Перед тем как разрабатывать подобный фильтр, необходимо определить импульсную характеристику системы (идентифицировать систему). Тема идентификации системы подробно рассмотрена в работе [Proakis J. G. and Manolakis D. G. (1988) Introduction to Digital Signal Processing, p. 429. Basingstoke: Macmillan].
Тема анализа и кодирования речи в сферах взаимодействия человека с машиной и сжатия данных довольно интересна. Иногда при этом используется тот факт, что речевой сигнал можно смоделировать как свертку серии импульсов, представляющих основные тоны, активирующих импульсов и импульсной характеристики речевого тракта [Rabiner L. R. and Gold B. (1975) Theory and Application of Digital Signal Processing, Chapters 12 and 13. Englewood Cliffs NJ: Prentice-Hall]. Получающуюся тройную свертку можно легко обратить в форму, подходящую для линейной независимой от времени системы.
Для двух последовательностей данных можно легко найти их свертку, причем вычисления будут отличаться только порядком одной последовательности. Более того, для более длинных последовательностей данных необходимые операции можно ускорить, используя методы быстрого преобразования Фурье, чтобы получить быструю свертку. Если одна последовательность имеет чересчур большую длину, можно использовать методы наложения-сложения или наложения-записи; см. разделы работы [
Brigham E. O. (1974) The Fast Fourier Transform, Sections 13.3 and 13.4. Englewood Cliffs NJ: PrenticeHall.
DeFatta D. J., Lucas J. G. and Hodgkiss W. S. (1988) Digital Signal Processing: A System Design Approach, Section 6.9, p. 306. New York: Wiley.
]. Свертку можно выполнять, используя, например, КИХ-фильтр, реализуемый с помощью БПФ, а также применяя согласованный фильтр.
В сфере цифровой обработки для реализации трансверсальных фильтров может использоваться технология приборов с зарядовой связью (ПЗС). Это позволяет получать линейную фазовую характеристику при скоростях передачи данных, превышающих 100 МГц при стандартных конфигурациях линий задержки .
Аналоговую обработку можно выполнять, реализовав линии задержки с отводами, используя устройства с поверхностными акустическими волнами (ПАВ) . Эти устройства работают в диапазоне от 2 МГц до 2 ГГц. Другие реализации можно получить на основе конвольверов и корреляторов, универсальных цифровых процессоров сигналов, стандартных микропроцессоров и транспьютеров.
В качестве примеров последних можно привести системы реального времени для устранения окулярных артефактов из всех 16 каналов ЭКГ человека .
Время вычислений, необходимых для быстрой корреляции и свертки, можно дополнительно сократить в два раза . Рассмотрим свертку x(n) и h(n). При вычислении X(k) действительная часть БПФ заполняется четными членами x(n), а мнимая часть — нечетными, и длина БПФ вполовину сокращается. Далее действительная часть дает четные члены искомой сверткой, а мнимая часть — нечетные. Аналогично свертку двух последовательностей данных можно вычислить одновременно. Заполним действительную часть БПФ элементами последовательности x1(n), а мнимую часть — элементами последовательности x2(n) и вычислим X1 (k). Действительная часть равна , а мнимая часть — .
Пример реализации свертки, написанный на C++:
Надеюсь, эта статья про линейная свертка, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое линейная свертка, циклическая свертка и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Цифровая обработка сигналов
Комментарии
Оставить комментарий
Цифровая обработка сигналов
Термины: Цифровая обработка сигналов