Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu_2010.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
20.95 Mб
Скачать
  1. Вычисление периодической, круговой и линейной свертки. Алгоритм быстрой свертки. Вычислительная эффективность.

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

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

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

Пусть имеются две периодические последовательности и с периодом N. И пусть коэффициенты их дискретного ряда Фурье есть и соответственно.

Периодической сверткой этих последовательностей является последовательность определяемая выражением:

(1.173)

Последовательность также является периодической с периодом N. Поэтому периодическую свертку достаточно вычислить на одном периоде.

Коэффициенты дискретного ряда Фурье последовательности будет определяться следующим образом:

(1.174)

Для последовательностей и конечной длительности, ДПФ которых равны и соответственно, круговая (циклическая) свертка будет соответствовать одному периоду последовательности т. е.(круговая свертка – это один период периодической свертки)

(1.175)

где

Соответствующее ДПФ последовательности будет определяться произведением ДПФ исходных последовательностей, т. е.

(1.176)

При малых значениях N возможно и непосредственное вычисление круговой свертки по соответствующей формуле. Однако при последовательностях большой длительности возникают существенные вычислительные трудности. Поэтому в таких случаях для вычисления свертки используют прямое и обратное дискретное преобразование Фурье. С этой целью для заданных последовательностей и вычисляют соответствующие им ДПФ и Полученные последовательности перемножаются. Для последовательности вычисляется обратное ДПФ, что дает искомую последовательность

(1.177)

Если длительность одной из исходных последовательностей равна , а другой – причем то их свертка должна вычисляться для значения большего из чисел и В этом случае последовательность меньшей длительности добавлением нулей преобразуется в последовательность длительности N.

Линейная свертка, представляющая основной интерес для практических приложений, определяется следующим образом:

(1.178)

где и – конечные последовательности длительности N.

Непосредственно проверяется, что имеет длину 2N – 1, т. е. она может иметь самое большое 2N – 1 ненулевых отсчетов.

Если последовательность получается путем нахождения обратного дискретного преобразования Фурье после перемножения ДПФ последовательностей и то каждое из этих преобразований Фурье и должно вычисляться на основе 2N – 1 точек, т. е. в этом случае вычислительная процедура будет выглядеть следующим образом:

(1.179)

Здесь и будет линейной сверткой и

Следует отметить, что линейная свертка была бы получена, если бы ДПФ вычислялось на основе более чем 2N – 1 точек. Но в общем случае линейная свертка не получилась бы, если бы ДПФ вычислялось на основе меньшего числа точек.

Таким образом, для того, чтобы использовать рассмотренный выше метод вычисления круговой свертки для вычисления линейной свертки, необходимо каждую последовательность и дополнить (N – 1)-й нулевой точкой так, чтобы их общее число равнялось 2N – 1. Далее определяют круговую свертку полученных таким образом удлиненных последовательностей, рассматривая их как периодические.

В общем случае может понадобиться вычисление свертки двух последовательностей неравной длины. Если, например, имеет длительность а – длительность то их свертка будет иметь длину Поэтому следует перемножать ДПФ исходных последовательностей, вычисленные на основе точек.

Во многих практических задачах часто возникает необходимость вычисления свертки двух последовательностей, когда одна из них гораздо длиннее другой (например, или ). Можно, конечно, всегда выбрать N, равным ( ), но такой подход неэффективен и по ряду причин неудобен. Во-первых, перед вычислением свертки в этом случае нужно иметь всю более длинную последовательность. На практике, например, в радиолокации или при обработке речевых сигналов, это условие не всегда выполнимо. Во-вторых, поскольку обработка начинается только после приема всей более длинной последовательности, то результат получается с большой задержкой. Кроме того, при слишком больших ( ) вычисление ДПФ значительно усложняется, так как для этого требуется очень большой объем памяти.

В этих случаях используют процедуры, основанные на разбиении более длинной последовательности на короткие секции и вычислении частичных сверток, из которых затем формируется искомая линейная свертка.

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

Первый метод, основанный на использовании алгоритмов БПФ и получивший название метода быстрой свертки, приводит к существенному сокращению требуемого числа арифметических операций. Действительно, необходимые расчеты для прямого метода вычисления показывают, что для получения линейной свертки двух N-точечных последовательностей x1(m) и x2(n – m) следует умножить каждое значение x1(m) на каждое значение x2(n – m). Следовательно, N значений x1(m) нужно перемножить с N значениями x2(n – m), в результате чего требуется N  N N2 умножений.

Второй метод, использующий теоретико-числовые преобразования (ТЧП), является точным, так как служит для преобразования последовательностей в кольце целых чисел. Существенным недостатком этого метода, ограничивающим его применение в реальных системах, является зависимость между длиной последовательности N и требуемой длиной кодового слова, что приводит к длинным кодовым словам для больших N.

Третий метод – это метод модульной арифметики в кольце полиномов, обеспечивающий высокую эффективность и точность вычислений. Недостаток этого метода состоит в сложности программирования вычислений, которая существенным образом зависит от длины обрабатываемой последовательности.

Таблица 1.9

Число действительных умножений при вычислении свертки двух N-точечных последовательностей

Прямой метод

Быстрая свертка

Прямой метод / Быстрая свертка

8

64

448

0,14

16

256

1088

0,24

32

1024

2560

0,40

64

4096

5888

0,70

128

16 384

13 312

1,23

256

65 536

29 636

2,21

512

262 144

65 536

4,00

1024

1 048 576

143 360

7,31

2048

4 194 404

311 296

13,47

Недостатком этого метода является значительные ошибки округления, большой объем памяти, необходимый для хранения комплексных экспоненциальных коэффициентов, и все ещё значительный объем вычислений.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]