◄ ЧП Ферма
◄ ММ ЧПФ
▲ Выше
ТЧП Гаусса ►
|
Двумерное ЧП Ферма (2мЧПФ) |
SN,N
=
RN,N
xN,N
mod Fn
xN,N = N−1 N−1 RN,N−1 SN,N mod Fn |
Старое вино в новых бутылках. Поговорка |
Товарищ, верь... Поговорка |
Модели вычисления 2мЧПФ.
Построчно-столбцовый алгоритм ЧПФ-m.
В частном случае N1=N2=T пару "квадратных" 2мЧПФ можно представить в матричном виде так
Эта матричная модель (ММ) соответствует классическому построчно-столбцовому (покоординатному) методу (или алгоритму — ПСА) вычисления многомерного ЧПФ-m
SN1, ... , Nm[w1, ... ,wm]
=
(RN1, ... , Nm)
·
xN1, ... , Nm[t1, ... ,tm]
( mod Fn )
,
которую можно записать так
где внутренние одномерные ЧПФ
RNi
берутся по i-м координатам матриц промежуточных данных.
Вычисление ЧПФ-m по векторному основанию
(VectorRadix-алгоритм).
Можно получить и другую интерпретацию многомерного ЧПФ-m (по аналогии с ДПФ-m), если
развернуть в одну строку по координатам (т.е. по строкам — в лексикографическом порядке)
матрицу
xN1, ... , Nm
и аналогично матрицу
NB. Таким образом, матрица многомерного ЧПФ-m, как и ДПФ-m, может быть определена через кронекеровское (тензорное) произведение матриц одномерных ЧПФ. Для двумерного 2мЧПФ (2мДПФ) определённая выше матричная модель по векторному основанию запишется так
В частном случае N1=N2=T , если развернуть по строкам выше рассмотренные матрицы xT,T[t1,t2] и ST,T[w1,w2] , то "квадратное" 2мЧПФ можно записать по аналогии с одномерным ЧП Ферма так
ST2[w]
=
RT[2]
·
xT2[t]
( mod Fn )
,
где
RT[2]
=
RT
⊗
RT
— кронекеровский (тензорный) квадрат
RT
.
Учитывая свойство кронекеровского (тензорного) произведения векторов (матриц)
матрицу
RT[2]
можно определить через одномерный алгоритмом ЧП Ферма
для случая разложения длины преобразования N на два сомножителя
Обобщая 2мЧПФ на случай ещё большего разложения длины "квадрата"
N1
=
N2
=
N
=
Tv
,
запишем ММ БА для "квадратного" 2мЧПФ
по основанию T
с прореживанием по частоте (DIF) и замещением
Обобщая на случай m-измерений (т.е. на m-мерный гиперкуб)
N х N х...х N
=
N m
,
N
=
Tv
,
запишем ММ БА для ЧПФ-m
по основанию T
с прореживанием по частоте (DIF) и замещением
Эти матричные модели будут конкретизированы ниже в разделе взаимосвязи одномерных и многомерных ДП Фурье и ЧП Ферма. |
Вычисление 2мЧПФ по ПП Нуссбаумера.
Если векторы y[t], x[t] и h[t] рассматривать как полиномы (или многочлены) Y(z), X(z) и H(z) , а их элементы ("точки") — как коэффициенты при степенях неизвестного z, то в общем случае свёртка в виде произведения полиномов запишется так
Y(z)
=
X(z)·H(z) mod P(z)
.
N-точечные полиномиальные преобразования (ПП), т.е. произведения двух полиномов (многочленов) степени N−1 по модулю третьего полинома P(z), где z — корень из 1 в поле коэффициентов при степенях полиномов, — это аналоги ДПФ в кольце полиномов. Подробнее см. в разделах "Связь между ТЧП, ПП и ДПФ" и "ПП и вычисление свёрток"
NB.
От себя замечу, что структурная сложность ПП Нуссбаумера слишком высока. Поэтому
его наглядность (в смысле понятности для инженера) оставляет желать лучшего или требует
от инженера длительного привыкания к ПП, чтобы применять их для операций ЦОС.
|
Если на клетке слона прочтёшь надпись "буйвол", не верь глазам своим. Козьма Прутков "Мысли и афоризмы",106. |
Изоморфизм ДП Виленкина (ДП-В) и ДПФ-m. Самый общий (абстрактный) подход к построению матриц в базисе дискретных функций Виленкина определяется рекурентным выражением
VN1, ... , Nm
=
VN1, ... , Nm−1
⊗
VNm
,
что при
VNi
=
FNi
даёт ДПФ.
Отсюда непосредственно следует выражение для оператора ДПФ-m
В этом представлении различают такие частные случаи. 1. Дискретное преобразование Виленкина-Понтрягина (ДП-ВП):
N=N1N2 , ... , Nm
,
где
Ni
— произвольные.
2. Дискретное преобразование Виленкина-Крестенсона (ДП-ВКФ): N=rv , тогда
где
EN
— некоторая матрица перестановок, определяющая тип базиса в ВКФ.
Различают такие типы базисов:
2.1) преобразование Адамара: r=2 , EN = IN , тогда
VN
=
HadN
;
2.2) преобразование Пэли: EN = QN(r) — матрица цифроинверсных перестановок по основанию r, тогда
PalN
=
QN(r)
·
HadN
;
2.3) преобразование Уолша: EN = GrayN(r) · QN(r) , где GrayN(r) — матрица перестановок по правилу кода Грэя, тогда
WalN
=
GrayN(r)
·
QN(r)
·
HadN
.
Из выше приведенного определения дискретного преобразования Виленкина (ДП-В) следует изоморфизм преобразований ДП-В и многомерного ДПФ-m (или ЧПФ-m). т.е.:
1) многомерное
ДПФ-m
размерности
Nm!
=
N1
·
N2
· ... ·
Nm
;
2) многомерное ДПФ-m размерности N х N х ... х N изоморфно одномерному представлению в базисе функций Виленкина-Крестенсона размерностью N m . NB. Следовательно, быстрые алгоритмы, синтезированные для вычисления многомерного ДПФ-m, могут быть непосредственно использованы для вычисления одномерного ДП-В. |
Нет вещи столь великой, которую не превзошла бы величиною ещё большая. Нет вещи столь малой, в которую не вместилась бы ещё меньшая. Козьма Прутков "Мысли и афоризмы",4. |
Проблема оптимального БА для ДП Фурье. Анализ различных алгоритмов БПФ размерности N=2v показывает, что существует нижняя граница числа вещественных арифметических операций
Такой границы достигает ряд современных алгоритмов БПФ
(Уэнга-Капорина, Split-radix, Кули-Тьюки по основанию 4).
Анализ различных методов факторизации также показывает, что если преобразуемые
в алгоритмах БПФ данные не выходят из поля комплексных чисел,
то уменьшить эти оценки вычислительной сложности не удаётся.
Однако, доказано
(см.
)
на основании теории Винограда
, что нижняя потенциально достижимая (теоретически) граница числа вещественных
нетривиальных умножений (т.е. не на ±1, не на ±j и не на простые константы) в БА для ДП Фурье размерности
N=2v
равна
что при v > 5 (т.е. при N > 32) значительно меньше
достигнутых в реальных алгоритмах оценок вычислительной сложности.
Таблица сравнения числа нетривиальных операций умножения (не на ±1 и не на ±j)
в оптимальных алгоритмах БПФ (комлексные данные)
с теоретически минимальной границей.
Одним из возможных путей сокращения разрыва между достигнутой и теоретически минимальной оценками числа умножений в БПФ является факторизация одномерного алгоритма через многомерное преобразование и циклические свёртки (ЦС), которые можно вычислять как в поле комплексных чисел так и через ТЧП — ЧП Ферма или ЧП Мерсена (т.е. при гибридной факторизации).
NB.
Достигнутое (при факторизации одномерного алгоритма через многомерный и ЦС) сокращение
количества нетривиальных вещественных умножений часто сочетается с ещё большим ростом числа
вещественных сложений, но при этом катастрофически растёт структурная сложность БА для ДПФ.
Переход к вычислениям ЦС через ТЧП (т.е. при гибридной факторизации матрицы ДПФ)
в конечных модулярных полях, в которых оценки Винограда не применимы, приводит к меньшему,
чем у Винограда числу умножений. А что если вообще переехать в модулярные поля (вместо поля
комплексных чисел), то и жизнь будет совсем другая — целочисленная!
|
Специалист подобен флюсу: полнота его одностороння. Козьма Прутков "Мысли и афоризмы",101. |
Критика ЧПФ и ограничения его применения в ЦОС. При вычислении ДП или циклической свёртки в конечном поле (по модулю целого числа) желательно, чтобы результат соответствовал вычислениям в обычной арифметике, т.е. в поле вещественных или комплексных чисел. Для этого входные и выходные данные операций в конечном поле должны находится в ограниченном "динамическом" диапазоне, который связан с выбором величины модуля.
Однако, не нужно понимать это пожелание слишком буквально.
Если циклическая свёртка вычисляется по определению, т.е.
или через одномерные ЧПФ, то ограничение динамического диапазона означает, что
где
║f(t)║
— норма функции
f(t)
. Иными словами результат ЦС (или ЧПФ) должен быть представлен
в ПСАНВ± по модулю M.
Если норму
f(t)
определить как
║
f(t)
║
=
max |f(t)|
,
то
max |y[t]|
=
A y
≤
⌋
(M−1)/2
⌊
.
Если предположить, что
max |x[t]|
=
max |h[t]|
=
(re)A x,h
,
то наибольшее значение (амплитуда)
((re)A x,h)2
≤
⌋
(M−1)/(2T)
⌊
,
(re)A x,h
≤
⌋
√
(M−1)/(2T)
⌊
.
NB.
Интересно, что Нуссбаумер в
приводит эту формулу так
что представляется более точным. Это означает, что динамический диапазон сигналов в свертке должен находиться в пределах ПСАНВ± по модулю Fn-1 ( здесь M=Fn ) , т.е.
T/2
·
max |x[t]|
·
max |h[t]|
≤
(M−1)/(2·2)
=
(Fn−1)/(2·2)
,
√ T/2 · max |x[t]| ≤ √ M−1 /2 = (Fn-1−1) /2 . Пусть, например, M=Fn=F5=232+1 и T=28 . Тогда
28/2
·
max |x[t]|
·
max |h[t]|
≤
(232+1−1)/(2·2)
=
(F5−1)/(2·2)
,
(28/2)1/2 · max |x[t]| ≤ ( 232 )1/2 /2 = (F4−1) /2 , (27)1/2 ≈ 11 · max |x[t]| ≤ (F4−1) /2 =215 . Для комплексных (целочисленных) сигналов в свертке наибольшее значение по абсолютной величине (амплитуда) получается аналогично
2
·
T/2
·
max |(c)xre[t]|
·
max |(c)hre[t]|
≤
⌋
(M−1)/(2·2)
⌊
=
(Fn−1)/(2·2)
,
√ T · max |(c)xre[t]| ≤ ⌋ (Fn-1−1) /2 ⌊ , √ T · max |(c)xim[t]| ≤ ⌋ (Fn-1−1) /2 ⌊ ,
т.е. здесь норма функции берётся и по вещественной и по мнимой компоненте комплексных данных.
Тогда по Нуссбаумеру правильно будет вычисляться свертка комплексных векторов тогда, когда
динамический диапазон их вещественной и мнимой частей удовлетворяет условию
и это представляется более точным. Пусть, например, M=Fn=F5=232+1 и T=28 . Тогда
24
·
max |(c)x[t]|
≤
(F4−1)
/2
=215
.
Ясно, что с практической точки зрения это никуда не годится (слишком накладно — ведь при больших длинах последовательностей T подходящими оказываются только очень большие модули M=F6 или M=F7. С другой стороны, это условие чрезмерно осторожно и для многих практических приложений.
Более точная граница амплитуды входных сигналов может быть получена с помощью
(среднеквадратичной или средне-a-тичной) нормы
La
Ограничения на амплитуду входных вещественных данных и выходного сигнала (т.е. свёртки)
накладываются так:
Для случая a=b=2 имеем
(1/a)+(1/b)
=
(1/2)+(1/2)
=
1
,
Пусть, например, M=Fn=F2=24+1=17 и T=22=4 . Тогда
║
x[t]
║2
·
║
h[t]
║2
≤
(24+1−1)/(2·22)
=
21
,
(re)A x,h
≤
√2
.
Например, известно что свертка векторов x[t]=[2,-2,1,0] и h[t]=[1,2,0,0] по модулю 17 равна
y[t] = x[t] * h[t] mod 17 = [2,2,-3,2]
.
Предыдущая норма
(
max |x[t]|
≤
√2
)
здесь не выполняется.
Проверим для этого примера выполнение нормы
4
·
(
4−1
.
(22+|−2|2+12+02)
)1/2
.
(
4−1
.
(12+22+02+02)
)1/2
≤
(17−1)/2
4
·
(
2
)1/2
.
(
1
)1/2
≤
8
.
Этот последний вид нормы всё же практичнее, хотя тоже приводит к жёстким пределам для амплитуды (диапазона) входных сигналов при ЦС. NB. Таким образом, если свёртки вычисляются посредством ЧП Ферма, то единственным источником шума являются предварительное округление входного сигнала до целых значений и его масштабирование или квантование, т.е. умножение на множитель КВАНТ после центрирования (т.е. после вычитания среднего арифметического) − это означает коррекцию динамического диапазона исходного сигнала (перед вычислением спектра или свертки), которая делается для предотвращения "переполнения регистра" (точнее для того, чтобы результат свёртки был таким же как и при вычислениях в обычной арифметике целых), причём отношение сигнал/шум (ОСШ) на выходе практически не зависит от длины T свёртки. Отсюда ЧП Ферма хорошо использовать для вычисления длинных свёрток. Однако порядки T КОРНЕЙ из 1, равные степени 2 (чтобы при вычислении ЧПФ обойтись без умножений), невелики и жёстко связаны с длиной b машинного слова (в битах), т.е. с модулем поля − числом Ферма
Fn
=
2b+1
=
22n + 1
.
Одно из решений этой проблемы при вычислении ЦС заключается в одновременном (параллельном) вычислении свёртки двух последовательных блоков:
y1+2,T
≡
hT
*
x1+2,T
mod Fn
,
где
x1+2,T
=
x1,T
+
(2b/2)
·
x2,T
.
Тогда
y1,T
≡
(
y1+2,T
)
mod 2b/2
,
y2,T
=
2b/2
(
y1+2,T
−
y1,T
)
mod Fn
.
С помощью этого метода длина преобразования для данного модуля M=Fn удваивается, но переполнений не возникнет только при условии, что
|y1,T|
и
|y2,T|
≤
(√M−1 )/2
=
(2b/2)/2
,
где
M=Fn=2b+1
,
т.е. за удвоение длины свёртки приходится платить уменьшением
вдвое числа битов
(b/2)
в двоичном представлении предельной амплитуды её результата.
Это уже черезчур (а что занадто, то не здраво).
P.S. Возможно, что здесь одна из досадных "очепаток" в переводной литературе по ЦОС, т.к. и в самом оригинале они встречаются. Об оценке предельной амплитуды для комплексных данных см. в этом же разделе выше, т.е. там было
2T
·
| x1,T |
·
| x2,T |
≤
(M−1)/2
,
T
·
| xT |2
≤
(M−1)/4
,
√T
·
| xT |
≤
√M−1/2
=
(Fn-1−1)/2
,
т.е. xT ожидается в ПСАНВ± по модулю
Fn−1
.
А вот для результата свёртки, это, по идее, должно выглядеть так
|y1,T|
и
|y2,T|
≤
(M−1)/2
=
(Fn−1)/2
,
т.е. yT получается в ПСАНВ± по модулю
Fn = M
.
Однако, если вычислять ЦС не по определению (или не через одномерное ЧП Ферма), а посредством двумерной ЦС-2 (или многомерной ЦС-m), где
T
=
T1
х
T2
то по крайней мере значение T в выражении для
(re)A x,h
(т.е. для нормы или "динамического" диапозона входных данных) будет заменено на
T1
или
T2
.
Пусть, например,
Максимальные длины T одномерных ЦС, вычисляемых через одномерные ЧПФ (1D)
и длины T одномерных ЦС, вычисляемых через ЦС-2 (2D).
Максимальные длины T/2 одномерных ЛС, вычисляемых через одномерные ЧПФ (1D)
и длины T/2 одномерных ЛС, вычисляемых через ЦС-2 (2D).
|
Вещи бывают великими и малыми не токмо по воле судьбы и обстоятельств, но также по понятиям каждого. Козьма Прутков "Мысли и афоризмы",139. |
Ферма снова побеждает.
Это ещё до конца не дописано (только набросок) — 2 ноября 2005 года!
Разложение длины N одномерных ЦС на множители при вычислении через ЦС-2.
Модель вычисления одномерного ЧПФ через многомерное.
Теорема. ЧПФ
SN[w]
=
RN
·
xN[t]
mod Fn
одномерного сигнала
xN[t]
длиной
N=N1·N2
,
НбОД( N1, N2)≠1
вычисляется как двумерное ЧПФ (2мЧПФ) размерности
N1хN2
от тензорной суммы из
N2
циклических свёрток длины
N1
где CN1(k) = ( N1−1 RN1 dN1(k) RN1−1 ) — оператор циклической свёртки. Транспонирование матрицы (DIT)RN даёт матричную модель (ММ) БА для ЧП Ферма с прореживанием по частоте (DIF)
где CN2(s) = ( N2−1 RN2 dN2(s) RN2−1 ) — оператор циклической свёртки. Вычисление ЧПФ начинается с перестановки (на 1-м этапе) входного вектора xN[t] в вектор zN[t]
где
zN1(k)
— это
k-й столбец двумерного представления
zN1, N2
вектора
zN[t]
.
Тогда полное выражение для одномерного ЧП Ферма примет вид
где оператор
CN1(k)
⊗
zN1(k)
— это ЦС размерности
N1
из
k-х
секций вектора
zN1(k)
(т.е.
k-х столбцов матрицы
zN1, N2
)
и векторов, образованных из
k-х секций
диагональной матрицы весовых коэффициентов
dN1(k)
в выражении для
CN1(k)
.
Модель вычисления 2мЧПФ через одномерное ЧПФ и свёртки.
Теорема. Двумерное ЧПФ (2мЧПФ)
SN1, N2[w1,w2]
=
RN1, N2
·
xN1, N2[t1,t2]
mod Fn
матрицы
xN1, N2[t1,t2]
размерностью
N1хN2
,
НбОД( N1, N2)≠1
вычисляется как одномерное ЧП Ферма длины
N=N1·N2
от тензорной суммы из
N2
циклических свёрток длины
N1
.
Модель вычисления одномерной ЦС через многомерную.
Теорема. Одномерная циклическая свёртка
yN[t]
=
xN[t]
*
hN[t]
векторов длины
N=N1·N2
,
НбОД( N1, N2)≠1
вычисляется через двумерную ЦС-2 размерностью
N1хN2
и
2N2
одномерных ЦС размерностью
N1
.
|
Лучшим каждому кажется то, к чему он имеет охоту. Козьма Прутков "Мысли и афоризмы",151. |
Резюме: сложность — плата за оптимальность. Фурье-подобные ДП представляют из себя занятное поле деятельности для математиков, желающих изобрести новый БА или даже новое ДП. Статей с описаниями новых БА для ДПФ в 60-80-х в США, а в 80-х годах и в СССР появлялось немало. Однако, чрезмерная структурная сложность новых БА и, как следствие, трудность их восприятия инженером-программистом делает эти БА скорее забавой для теоретиков. Ведь ускорение на 10% не стоит труда. Другое дело ЧП Ферма, где вычисления делаются с целыми числами и точно, без округлений. Это же просто другой мир — целочисленный, а спектры Ферма можно отображать в поле комплексных чисел (т.е. обратно в спектры Фурье), где их привычней анализировать. Этот подход к ускорению вычисления ДП Фурье, даже при использовании простых по структурной сложности, т.е. не самых оптимальных по числу умножений, алгоритмов БПФ (например, типа Кули-Тьюки) для вычисления ЧП Ферма (в котором умножения заменяются на быстрые сдвиги) представляется очень интересным. |
Три дела, однажды начавши, трудно кончить: 1) вкушать хорошую пищу; 2) беседовать с другом, возвратившимся из похода и 3) чесать, где чешется. Козьма Прутков "Мысли и афоризмы",45. |
◄ ЧП Ферма ◄ ММ ЧПФ ▲ В начало текущей ТЧП Гаусса ► |
Последнее обновление 16.09.2013
© 2005 г., Александр Тимофеев, г.Харьков, Украина, eMail: atimopheyev@yahoo.com |