- •Оглавление
- •1. Общие вопросы цифровой обработки сигналгов
- •1.1. Основные расчетные алгоритмы для цифровых фильтров
- •2. Дискретные линейные системы
- •2.1. Модель дискретной линейной системы
- •2.2. Линейное разностное уравнение первого порядка
- •2.3. Частотная характеристика цепи первого порядка
- •2.4. Геометрическая интерпретация частотной характеристики
- •2.6. Обратное z-преобразование
- •2.7. Теорема о свертке
- •2.8. Теорема о комплексной свертке
- •2.9. Решение разностных уравнений первого порядка с помощью z-преобразования
- •2.10. Решение разностных уравнений второго порядка с помощью z-преобразования
- •2.11. Двустороннее z-преобразование
- •2.12. Цепи для разностного уравнения второго порядка
- •3. Расчет цифровых фильтров в частотной области
- •3.1. Синтез цифровых фильтров
- •3.2. Различные методы расчета цифровых фильтров
- •3.3. Применение принципа инвариантности импульсной характеристики
- •3.4. Коэффициент передачи цифровых резонаторов
- •3.5. Расчет цифровых фильтров на основе непрерывных фильтров с нулями на бесконечности
- •3.6. Определение цифрового фильтра с помощью квадрата модуля передаточной функции
- •3.7. Расчет цифровых фильтров путем билинейного преобразования функции непрерывного фильтра
- •3.8. Фильтры на основе частотной выборки
- •3.9 Метод частотной выборки
- •4. Эффекты квантования в цифровых фильтрах
- •4.1. Постановка задачи
- •4.2. Ошибки, вызываемые неточными значениями постоянных параметров
- •4.3. Ошибки, вызываемые аналого-цифровым преобразованием
- •4.4. Ошибки, вызываемые квантованием произведений
- •4.5. Эффект мертвой зоны
- •4.6. Формулы для шума округления при различных реализациях цифровых цепей
- •4.7. Пример. Различные структуры цепи с двумя полюсами и одним нулем
- •5. Дискретные преобразования фурье
- •5.1. Дискретное преобразование Фурье
- •5.2. Алгоритм Герцеля
- •5.3. Быстрое преобразование Фурье
- •Прореживание по времени
- •Прореживание по частоте
- •5.4. Соотношение между прореживанием по времени и прореживанием по частоте
- •Заключение
- •394026 Воронеж, Московский просп., 14
5.3. Быстрое преобразование Фурье
Прямое вычисление для всех N частот по (5.2) требует N2 комплексных умножений и сложений, и для умеренно большого N, скажем для N, большего, чем 1000, это прямое вычисление связано с большими затратами машинного времени. Методы, экономящие машинное время, так же, как только что рассмотренный метод Герцеля, используют некоторые искусственные приемы, в большинстве случаев основанные на том, что сумма произведений может быть иногда упрощена, если сделать сложение до умножения, или на том, что комплексные операции могут быть заменены действительными операциями.
Общим для этих методов является то, что полное преобразование rN точек занимает в r2 больше времени, чем преобразование N точек. Поэтому, даже если метод вычисления по выражению (5.2) требует только ¼ N2 операций, последовательности больше чем, скажем, из 10 000 точек потребуют невыполнимого количества вычислений. Однако все такие методы совсем недавно были вытеснены несколькими сходными алгоритмами, которые все вместе можно назвать быстрыми преобразованиями Фурье. Эти алгоритмы не применяются в тех случаях, когда число точек в последовательности является простым, но зато при N сложносоставном (имеющем много множителей) экономия может быть чрезвычайно большой. Когда N есть степень числа 2 (состоит из максимального числа множителей), то алгоритмы быстрых преобразований Фурье требуют проведения числа вычислений, пропорционального не N2, а , что, например, при N=1024 составляет 99%-ную экономию в вычислениях. Для эффективного использования этих алгоритмов требуется, чтобы N разлагалось на возможно большее число множителей. В большинстве задач на преобразуемые данные можно наложить это ограничение с тем, чтобы алгоритмы быстрого преобразования Фурье могли быть использованы.
При дальнейшем изложении будем пользоваться обозначениями в виде индексов, принятых в (5.18) и на рис. 5.3. Будем также обозначать величину как W. Тогда (5.2) и (5.3), определяющие ДПФ, примут вид
(5.43)
и
(5.44)
Из уравнения (5.43) не следует делать вывод, что W не зависит от N. Для последовательности с N/2 точками в (5.43) не только верхний предел суммы должен стать N/2—1, но и W должно быть заменено на W2.
Существуют два класса алгоритмов быстрого преобразования Фурье, и каждый класс имеет множество модификаций. Рассмотрим сначала метод, называемый прореживанием (decimation) по времени.
Прореживание по времени
Предположим, что число отсчетов N делится на два. Тогда полезно рассмотреть дискретные преобразования Фурье двух более коротких последовательностей: , состоящей только из четно пронумерованных отсчетов, и , состоящей только из нечетно пронумерованных отсчетов. Эти последовательности иллюстрируются рис. 5.6 и формально задаются как
,
(5.45)
,
Дискретные преобразования Фурье для этих последовательностей являются также последовательностями, состоящими из N/2 точек, или, как было показано, могут считаться периодическими последовательностями с периодом N/2.
Рис. 5.6. Последовательность из шестнадцати точек (а); последовательность из восьми точек, образованная из четно пронумерованных отсчетов (б); последовательность из восьми точек, образованная из нечетно пронумерованных отсчетов (в).
Они могут быть записаны в виде
(5.46)
Для нас представляет интерес ДПФ от полной последовательности, которое может быть выражено через и из (5.45):
. (5.47)
Простая манипуляция с выражением (5.47) дает
(5.48)
Соотношение (5.48) между Fk , Gk и Hk имеет важное значение для вычислений. В самом деле, Gk и Hk могут быть вычислены цри прямом методе с помощью (N/2)2 операций каждая, а соединение их, дающее Fk , требует дополнительно проведения только N операций, что в сумме составляет N + N2/2 операций (под операцией здесь подразумевается комплексное умножение и сложение). Но прямое вычисление Fk требует N2 операций, и поэтому (5.48) экономит вычисления почти в два раза для больших N.
В (5.48) индекс k изменяется от 0 до N—I. Однако Gk и Hk имеют период N/2 и вычисляются только в диапазоне от 0 до N/2—I. Поэтому необходимы особые «рецепты» для вычисления Fk при и при , а именно:
(5.49)
Рис. 5.7. Восьмиточечное ДПФ, приведенное к двум четырехточечным ДПФ с помощью прореживания по времени.
Это соотношение между Fk , Gk и Hk изображено на рис. 5.7, который показывает восьмиточечное ДПФ, сведенное к двум четырехточечным (направленный сигнальный граф может быть незнаком некоторым читателям. Основой его построения являются точки (или узлы) и стрелки (линии передачи). Каждый узел представляет переменную, а стрелки, указывающие на этот узел, берут начало в узлах, чьи переменные участвуют в формировании переменной данного узла. Это участие является аддитивным, и вес каждого слагаемого, если он отличается от единицы, обозначается постоянной, написанной рядом на линии передачи.
Рис. 5.8. Восьмиточечное ДПФ, приведенное к четырем двухточечным.
Так, на рис. 5.7 величина F7 у нижнего правого узла равна G3 +W 7H3. Операции, отличные от сложения и умножения на постоянную величину, должны быть ясно обозначены символами, отличными от точки или стрелки.)
Может случиться, что N/2 также делится на 2. В этом случае, поскольку , Gk и Hk являеотся дискретными преобразованиями Фурье, их вычисление может быть уменьшено тем же способом, каким было уменьшено вычисление Fk . Следуя этим путем, объем вычислений Fk можно успешно уменьшать, если все более и более увеличивать число ДПФ от все меньшего и меньшего числа точек со все большей и большей экономией вычислительных операций.
В этом и заключается сущность метода быстрого преобразования Фурье, На рис. 5.8 два четырехточечных ДПФ из рис. 5.7 приведены каждое к двум двухточечным, а на рис. 5.9 каждое двухточечное ДПФ приведено к двум одноточечным (которые являются нулевыми операциями, и поэтому полное вычисление Fk сводится к комплексным умножениям и сложениям).
До сих пор рассматривался только случай, когда N является степенью числа 2 или по крайней мере делится на 2. Прежде чем перейти к случаю общего N, обсудим более детально случай, когда N есть степень 2. Рассмотрение рис. 5.9 дает значительную информацию о практических аспектах вычисления дискретного преобразования Фурье. Из рисунка легко видеть, что там имеется 8×3 узлов и 2×8×3 стрелок, соответствующих сложениям и умножениям. Половина умножений может быть опущена, поскольку линии передачи, обозначенные стрелкой без надписи, имеют коэффициент умножения, равный единице.
Рис. 5.9. Восьмиточечное ДПФ, полностью сведенное к комплексным умножениям и сложениям повторением прореживания по времени (здесь требуется двоично-инверсная перестановка входных отсчетов)
Очевидно, половину оставшихся умножений также легко исключить, если учесть, что . Поэтому, если N есть степень 2, то для вычисления ДПФ последовательности из N точек требуется сложений и самое большее ½ умножений.
Допустим, кроме того, что входные данные могут запоминаться в памяти машины в порядке
как на рис. 5.9. Тогда вычисление дискретного преобразования Фурье может быть сделано «с замещением» (in place), т. е. путем записи всех промежуточных результатов на место исходной последовательности данных, а окончательного ответа — на место промежуточных результатов.
Чтобы показать это, предположим, что каждый узел соответствует двум регистрам памяти (двум, потому что величины являются в общем случае комплексными). Самые крайние слева восемь узлов представляют регистры, содержащие входные данные в переставленном порядке. Первая ступень вычислений заключается в вычислении содержимого регистров, представленных следующими восемью узлами вправо от входных узлов. Но каждая пара входных узлов воздействует только на соответствующую пару узлов, находящихся непосредственно за ними справа, и, если вычисления проводятся с двумя узлами одновременно, новые вычисленные значения могут быть записаны в те регистры, из которых взяты входные значения, поскольку входные значения больше не будут нужны для дальнейших вычислений. На второй ступени производился вычисление величин для следующего вправо вертикального ряда узлов, также включающего пары узлов, хотя узлы в этих парах разделены теперь двумя позициями вместо одной. Этот факт не изменяет свойства вычисления с замещением, поскольку каждая такая пара узлов воздействует только на пару узлов, следующую непосредственно за ней справа. Поэтому после того, как новая пара значений будет вычислена, она может быть сохранена в регистрах, где хранились старые, больше не нужные результаты, В вычислениях для последнего вертикального ряда узлов, соответствующих значениям дискретного преобразования Фурье, участвуют пары узлов, разделенные уже четырьмя позициями, но свойство замещения по-прежнему сохраняется.
Первоначальная перестановка данных в последовательности необходима для вычисления с применением метода замещения. Если ее не производить, то по мере развития алгоритма нечетно пронумерованные члены переместятся к концу последовательности. Изменение порядка следования отсчетов во входной последовательности получило наименование двоичной инверсии (bit reversal), поскольку отсчет, временной индекс которого дается двоичным числом должен быть сдвинут на место а отсчет, временной индекс которого должен быть сдвинут на место . Заметим, что перестановка в исходной последовательности может быть также произведена с замещением.
Из рис. 5.9 можно видеть, что два показателя степени у W, требуемые для вычисления любой пары узлов, отличаются на 4 или, в общем случае, на N/2. Так как WN/2 равно -1, то вычисления для пары узлов можно сделать с помощью всего лишь одного комплексного умножения, одного комплексного сложения и одного комплексного вычитания. Поэтому, если вычитание эквивалентно по сложности сложению, то наш предыдущий подсчет операций оправдывается.
Структура рис. 5.9 поясняет основную идею замены вычисления дискретного преобразования Фурье вычислением двух меньших дискретных преобразований Фурье, а каждого из этих — вычислением двух еще меньших преобразований и т. д.
На рис. 5.9 предполагается определенное распределение запоминаемых данных в памяти вычислительной машины до, во время и после вычисления. Подобные вычисления с различным распределением данных изображаются разного рода направленными графами, и они могут зачастую оказаться вариантами алгоритмов, использующих прореживание по времени.
Например, если представить, что на рис. 5.9 все узлы на горизонтали F1 переставлены местами со всеми узлами на горизонтали F4 , а все узлы на уровне F3 переставлены местами с узлами на уровне F6, причем стрелки перенесены вместе с узлами, то направленный граф становится таким, как на рис. 5.10.
Для такого варианта-графа не нужно, чтобы исходные данные были подвергнуты двоичной инверсной перестановке, однако результирующий спектр оказывается переставленным. Дополнительным неудобством может быть то, что степени у W, необходимых для проведения вычислений, располагаются в двоично-инверсном порядке. Первоначальное описание алгоритма, принадлежащее Кули , соответствует направленному графу рис. 5.10.
Несколько более сложное видоизменение рис. 5.9 приводит к сигнальному направленному графу рис. 5.11. В этом случае как входные данные, так и результирующий спектр представлены в «естественном» порядке, и коэффициенты в вычислениях также употребляются в естественном порядке. Однако вычисления теперь не могут производиться с замещением. Поэтому должен быть предусмотрен по крайней мере еще один дополнительный набор регистров. Этот сигнальный направленный граф и соответствующая ему процедура вычислений разработаны Стокхемом и независимо от него Санди.
Рис. 5.10. Видоизменение рис. 5.9, дающее алгоритм с нормальной нумерацией входной последовательности, но с двоично-инверсной перестановкой номеров выходной последовательности и коэффициентов.
Приведенные три формы сигнального направленного графа имеют смысл в том случае, когда данные хранятся в памяти с произвольной выборкой. Иногда данных слишком много, чтобы держать их в памяти одновременно.
В этом случае используется вспомогательная память с возможностью последовательной выборки. Остановимся на видоизменении рис. 5.9, соответствующем алгоритму Синглетона. Структура этого графа от участка к участку остается одной и той же и требует последовательного выбора данных из четырех раздельных массивов. Поэтому для практического применения алгоритма, изображенного на рис. 5.12, необходимы четыре магнитофона или магнитный барабан по крайней мере с четырьмя каналами.
До сих пор детально рассматривался только случай, когда N делится на 2. Все, что при этом делалось, может быть обобщено и на случай других делителей, однако алгоритмам при N, не являющимся степенью числа 2, уделялось меньше внимания. Это объясняется двоичной организацией цифровых вычислительных машин и тем, что при таких N и возрастающих количествах входных данных становится все труднее составлять программы. Тем не менее, если N имеет множитель p, можно сформировать p различных последовательностей , заданных в виде
(5.50 а)
и имеющих N/p точек. Индекс (i) здесь обозначает i-ю последовательность, а не показатель степени. Каждая из этих последовательностей имеет ДПФ Gk(i) и ДПФ от fп может быть вычислено с помощью p более простых ДПФ с pN комплексных умножений и сложений, т. е.
Рис. 5.11. Видоизменение рис. 5.9, которое уничтожает необходимость в двоично-инверсной перестановке, но не допускает вычисления преобразования с замещением.
Рис. 5.12. Видоизменение рис. 5.9 с постоянной структурой на всех участках
Алгоритм требует, чтобы входные данные были представлены в двоично-инверсном порядке, но степени W необходимо располагать в естественном порядке.
для (5.50 б)
что совпадает с (5.49), если p = 2. На рис. 5.13,а изображен случай, когда p = 3 и N = 6, а на рис. 5.13,б —случай, когда p = 2, N = 6. Если N/p является составным, то вычисления различных Gk(i) могут быть затем снова упрощены. Общей для рассмотренного выше набора методов является процедура формирования подпоследовательностей из преобразуемой последовательности, причём каждая подпоследовательность составляется только из каждой р-й точки исходной последовательности.
Это можно понимать так, словно подпоследовательности образуются путем дискретизации временной функции с меньшей частотой или путем пропуска р-1 отсчетов из каждой группы в p отсчетов; отсюда и происходит название «прореживание по времени».
Рис. 5.13. Прореживание по времени:
а) для шеститочечного ДПФ с р=3;
б) для шеститочечного ДПФ с р=2.