NTT-Fermat_MM-2D.HTM
ЧП Ферма     ◄ ММ ЧПФ     ▲ Выше     ТЧП Гаусса

Двумерное ЧП Ферма (2мЧПФ)



SN,N = RN,N xN,N mod Fn

xN,N = N1 N1 RN,N1 SN,N mod Fn
 



Определение двумерного ЧП Ферма
Модели вычисления 2мЧПФ
  Построчно-столбцовый алгоритм ЧПФ-m
  Вычисление ЧПФ-m по векторному основанию
  Вычисление 2D-спектра по ТА Григоряна
    Тензорное представление 2D-спектра при N — простом
    Способ вычисления 2D-спектра по ТА при N — простом
    Тензорное представление 2D-спектра при N=2v
    Способ вычисления 2D-спектра по ТА при N=2v
    Оценка вычислительной сложности ТА при N=2v
  Вычисление 2мЧПФ по ПП Нуссбаумера
Изоморфизм ДП Виленкина (ДП-В) и ДПФ-m
Проблема оптимального БА для ДП Фурье
Критика ЧПФ и ограничения его применения в ЦОС
Ферма снова побеждает
  Модель вычисления одномерного ЧПФ через многомерное
  Модель вычисления 2мЧПФ через одномерное ЧПФ и свёртки
  Модель вычисления одномерной ЦС через многомерную
Резюме: сложность — плата за оптимальность




 
Старое вино в новых бутылках.
                              Поговорка

Определение двумерного ЧП Ферма.

По аналогии с двумерным ДП Фурье (или 2мДПФ)

SN1, N2[w1,w2] = FN1, N2 · xN1, N2[t1,t2]
рассмотрим матричную форму двумерного ЧП Ферма (или 2мЧПФ)
SN1, N2[w1,w2] = RN1, N2 · xN1, N2[t1,t2]   ( mod Fn ) .
Пара (прямое и обратное) 2мЧПФ в -форме по модулю Fn выглядит так

 
SN1, N2[w1,w2] =
 
N11
t1=0
N21
t2=0
 
xN1, N2[t1,t2] rootN1w1t1 rootN2w2t2 mod Fn ,
 
  w1 = 0,1, ... , N11 ,   w2 = 0,1, ... , N21 ,
 
      xN1, N2[t1,t2] =
 
 
 
= N11 N21   ·
 
N11
t1=0
N21
t2=0
 
SN1, N2[w1,w2] rootN1w1t1 rootN2w2t2 mod Fn
 
  t1 = 0,1, ... , N11 ,   t2 = 0,1, ... , N21 ,


причём   N=N1·N2   и   N | (Fn1) , а базовые элементы rootN1 , rootN2 сравнимы с некоторыми примитивными КОРНЯМИ из 1   gj1 , gj2
gj1(Fn1)/N1 rootN1 mod Fn ,
gj2(Fn1)/N2 rootN2 mod Fn ,
т.е. должны быть КОРНЯМИ из 1 порядков N1 и N2 соответственно.



 
Товарищ, верь...
                  Поговорка

Модели вычисления 2мЧПФ.

Построчно-столбцовый алгоритм ЧПФ-m.

В частном случае   N1=N2=T   пару "квадратных" 2мЧПФ можно представить в матричном виде так

ST,T[w1,w2] = RT · xT,T[t1,t2] · RT   ( mod Fn ) ,
xT,T[t1,t2] = RT1 · ST,T[w1,w2] · RT1   ( mod Fn ) .

Эта матричная модель (ММ) соответствует классическому построчно-столбцовому (покоординатному) методу (или алгоритму — ПСА) вычисления многомерного ЧПФ-m

SN1, ... , Nm[w1, ... ,wm] = (RN1, ... , Nm) · xN1, ... , Nm[t1, ... ,tm]   ( mod Fn ) ,
которую можно записать так

     SN1, ... , Nm = RNm [ ... [ RN2 [ RN1 · (xN1, ... , Nm) ]T ]T ... ]T   ( mod Fn ) ,

где внутренние одномерные ЧПФ RNi берутся по i-м координатам матриц промежуточных данных.


Вычисление ЧПФ-m по векторному основанию
(VectorRadix-алгоритм).

Можно получить и другую интерпретацию многомерного ЧПФ-m (по аналогии с ДПФ-m), если развернуть в одну строку по координатам (т.е. по строкам — в лексикографическом порядке) матрицу   xN1, ... , Nm   и аналогично матрицу

SN1, ... , Nm ,
а затем транспонировать эту строку, чтобы получить вектор-столбец размерностью Nm! . При таком упорядочении входных и выходных данных ЧПФ-m (ДПФ-m) можно представить в виде

( SNm![w] )[m] = (   m
  RNi
 i=1
) ( xNm![t] )[m]   ( mod Fn ) .

NB. Таким образом, матрица многомерного ЧПФ-m, как и ДПФ-m, может быть определена через кронекеровское (тензорное) произведение матриц одномерных ЧПФ.

Для двумерного 2мЧПФ (2мДПФ) определённая выше матричная модель по векторному основанию запишется так

( SN1· N2[w] )[2] = (   2
  RNi
 i=1
) ( xN1· N2[t] )[2]   ( mod Fn ) .

В частном случае   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 . Учитывая свойство кронекеровского (тензорного) произведения векторов (матриц)
T1
 
t1=0
AT[t1]   T1
 
t2=0
BT[t2]   = T1
 
t=0
( AT[t] BT[t] ) ,
матрицу RT[2] можно определить через одномерный алгоритмом ЧП Ферма для случая разложения длины преобразования N на два сомножителя
( (DIF) RN ) = ( (N1, N2)QN ) ( RN2 IN1 ) ( (DIF)DN )( IN2 RN1 )
так

(DIF) RT[2] = QT[2] ( RT IT )[2] ( (DIF)DT[2] )( IT RT )[2] .

Обобщая 2мЧПФ на случай ещё большего разложения длины "квадрата"

N1 = N2 = N = Tv ,
запишем ММ БА для "квадратного" 2мЧПФ по основанию T с прореживанием по частоте (DIF) и замещением


RTv[2] = QTv[2]

v=logT(Tv)
  ( (DIF)DTi ITvi )[2] ( IT2(i1) RT[2] IT2(vi) ) ,
 i=1

Обобщая на случай m-измерений (т.е. на m-мерный гиперкуб)

N х N х...х N = N m ,   N = Tv ,
запишем ММ БА для ЧПФ-m по основанию T с прореживанием по частоте (DIF) и замещением


RN[m] = QN[m]

v=logT(Tv)
  ( (DIF)DTi ITvi )[m] ( ITm(i1) RT[m] ITm(vi) ) ,
 i=1

Эти матричные модели будут конкретизированы ниже в разделе взаимосвязи одномерных и многомерных ДП Фурье и ЧП Ферма.





Вычисление 2мЧПФ по ПП Нуссбаумера.

Если векторы   y[t], x[t] и h[t]   рассматривать как полиномы (или многочлены)   Y(z), X(z) и H(z) , а их элементы ("точки") — как коэффициенты при степенях неизвестного z, то в общем случае свёртка в виде произведения полиномов запишется так

Y(z) = X(z)·H(z) mod P(z) .

N-точечные полиномиальные преобразования   (ПП), т.е. произведения двух полиномов (многочленов) степени   N1   по модулю третьего полинома P(z), где z — корень из 1 в поле коэффициентов при степенях полиномов, — это аналоги ДПФ в кольце полиномов.

Подробнее см. в разделах "Связь между ТЧП, ПП и ДПФ" и "ПП и вычисление свёрток"

NB. От себя замечу, что структурная сложность ПП Нуссбаумера слишком высока. Поэтому его наглядность (в смысле понятности для инженера) оставляет желать лучшего или требует от инженера длительного привыкания к ПП, чтобы применять их для операций ЦОС.



 
Если на клетке слона прочтёшь надпись
"буйвол", не верь глазам своим.
                             Козьма Прутков
                     "Мысли и афоризмы",106.

Изоморфизм ДП Виленкина (ДП-В) и ДПФ-m.

Самый общий (абстрактный) подход к построению матриц в базисе дискретных функций Виленкина определяется рекурентным выражением

VN1, ... , Nm = VN1, ... , Nm−1 VNm ,
что при VNi = FNi даёт ДПФ.
Отсюда непосредственно следует выражение для оператора ДПФ-m
  VN1, ... , Nm =   m
  FNi = F[N1, ... , Nm] .
 i=1

В этом представлении различают такие частные случаи.

1. Дискретное преобразование Виленкина-Понтрягина (ДП-ВП):

N=N1N2 , ... , Nm ,
где Ni — произвольные.

2. Дискретное преобразование Виленкина-Крестенсона (ДП-ВКФ):   N=rv ,   тогда

  VN = EN (   v
  Fr ) = EN · Fr[v] .
 i=1
где 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   размерности    N1 х N2 х...х Nm    изоморфно одномерному представлению в базисе функций Виленкина-Понтрягина размерностью

Nm! = N1 · N2 · ... · Nm ;

2) многомерное   ДПФ-m   размерности   N х N х ... х N   изоморфно одномерному представлению в базисе функций Виленкина-Крестенсона размерностью   N m .

NB. Следовательно, быстрые алгоритмы, синтезированные для вычисления многомерного ДПФ-m, могут быть непосредственно использованы для вычисления одномерного ДП-В.




 
Нет вещи столь великой, которую не
превзошла бы величиною ещё большая.
Нет вещи столь малой, в которую не
вместилась бы ещё меньшая.
                           Козьма Прутков
                     "Мысли и афоризмы",4.

Проблема оптимального БА для ДП Фурье.

Анализ различных алгоритмов БПФ размерности N=2v показывает, что существует нижняя граница числа вещественных арифметических операций

mult( FOURN ) = N(v-3) + 4 ,    add( FOURN ) = 3N(v1) + 4 .

Такой границы достигает ряд современных алгоритмов БПФ (Уэнга-Капорина, Split-radix, Кули-Тьюки по основанию 4). Анализ различных методов факторизации также показывает, что если преобразуемые в алгоритмах БПФ данные не выходят из поля комплексных чисел, то уменьшить эти оценки вычислительной сложности не удаётся.

Однако, доказано (см. ) на основании теории Винограда , что нижняя потенциально достижимая (теоретически) граница числа вещественных нетривиальных умножений (т.е. не на ±1, не на ±j и не на простые константы) в БА для ДП Фурье размерности   N=2v   равна

multmin( FOURN=2v ) = 4N - 2v2 - 2v - 4 ,

что при v > 5 (т.е. при N > 32) значительно меньше достигнутых в реальных алгоритмах оценок вычислительной сложности.

Таблица сравнения числа нетривиальных операций умножения (не на ±1 и не на ±j) в оптимальных алгоритмах БПФ (комлексные данные)
с теоретически минимальной границей.
       

Одним из возможных путей сокращения разрыва между достигнутой и теоретически минимальной оценками числа умножений в БПФ является факторизация одномерного алгоритма через многомерное преобразование и циклические свёртки (ЦС), которые можно вычислять как в поле комплексных чисел так и через ТЧП — ЧП Ферма или ЧП Мерсена (т.е. при гибридной факторизации).

NB. Достигнутое (при факторизации одномерного алгоритма через многомерный и ЦС) сокращение количества нетривиальных вещественных умножений часто сочетается с ещё большим ростом числа вещественных сложений, но при этом катастрофически растёт структурная сложность БА для ДПФ. Переход к вычислениям ЦС через ТЧП (т.е. при гибридной факторизации матрицы ДПФ) в конечных модулярных полях, в которых оценки Винограда не применимы, приводит к меньшему, чем у Винограда числу умножений. А что если вообще переехать в модулярные поля (вместо поля комплексных чисел), то и жизнь будет совсем другая — целочисленная!



 
Специалист подобен флюсу:
полнота его одностороння.
                           Козьма Прутков
                     "Мысли и афоризмы",101.

Критика ЧПФ и ограничения его применения в ЦОС.

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

Однако, не нужно понимать это пожелание слишком буквально.

1) Преобразования сигналов в конечных полях по модулю чисел Ферма по сравнению с другими целыми модулями (например, числами Мерсена) наиболее похожи на ДП Фурье сигналов из поля обычных комплексных чисел C. ЧПФ существует для любой длины T сигнала и могут вычисляться по БА таким же, как и БПФ, а в особых случаях при   T=2n   даже без умножений.
2) Однако, нам всё же хотелось бы иметь возможность переводить результаты вычислений, полученные в конечном поле, в поле обычных комплексных чисел C, где их привычней анализировать.
3) В самом простом случае этого можно добиться, если использовать не реально большие модули (числа Ферма) и ограничить динамические диапазоны входных сигналов так, чтобы переполнения арифметического регистра при умножении не возникало. Однако, для операций по модулю целого числа это выглядит абсурдно. Значит с переполнением регистра и взятием ВЫЧЕТов по модулю чисел Ферма придётся смириться.
4) Поэтому, говоря о соответствии ЧПФ и ЦС, вычисляемых в конечном поле, нашей обычной арифметике поля комплексных чисел C, мы будем иметь в виду необходимость ограничить динамические диапазоны только исходных синалов и собственно самого конечного результата, но никак не будем ограничивать промежуточные результаты.
Дело в том, что, например, для сигнала из обычных целых комплексных чисел в Z[j]-арифметике результат преобразования может совпасть с результатом в конечном поле/кольце только при условии, что компоненты сигнала-результата (комплексные целые) присутствуют в этом конечном поле/кольце. Если же они не представлены, то и ожидать совпадения результатов операций в разных полях нельзя (см. Примеры ТЧП Гаусса и Критика ТЧП Гаусса). Это в основном касается полей по модулю маленьких чисел Ферма.
5) Все, рассматриваемые ниже формулы, имеют характер качественных пожеланий или гипотез, т.к. либо непрактично суживают диапазон значений исходных сигналов, либо вообще рассматривают только максимальные значения сигналов и поэтому не реальны.
6) Правильнее говорить о соответствии спектров и сверток сигналов в конечном поле нашей обычной арифметике поля комплексных чисел C только тогда, когда задана формула перехода из поля C в кольцо целых комплексных чисел Гаусса Zμ[j] и обратно (например, умножение на масштабный множитель КВАНТ в сочетании с предварительным центрированием сигнала, что в конечном поле соответствует переходу от ПСВ+ к ПСАНВ± ). А уже в кольце ЦКЧ Гаусса спектры и свертки вычисляются при помощи ЧПФ после простого перехода в поле по модулю числа Ферма (см. ДПФ в кольце Гаусса).

Если циклическая свёртка вычисляется по определению, т.е.

y[k] =
T1
  x[t] h[ k-t T ] mod M ,
t=0
или через одномерные ЧПФ, то ограничение динамического диапазона означает, что



T1
x[t] · h[ k−t T]
t=0



        T1
  ≤    x[t] ║ · ║ h[ k−t T ] ║
        t=0
  (M1)/2 ,
где ║f(t)║ — норма функции   f(t) . Иными словами результат ЦС (или ЧПФ) должен быть представлен в ПСАНВ± по модулю M.   Если норму f(t) определить как
f(t) ║ = max |f(t)| ,
то
max |y[t]| = A y   ≤   (M1)/2 .
Если предположить, что
max |x[t]| = max |h[t]| = (re)A x,h ,
то наибольшее значение (амплитуда)   (re)Ax,h   для вещественных (целочисленных) входных сигналов определится так
((re)A x,h)2   ≤   (M1)/(2T)   ,
   (re)A x,h   ≤   (M1)/(2T)   .

NB. Интересно, что Нуссбаумер в     приводит эту формулу так

T · max |x[t]| · max |h[t]|   ≤   (M1)/2 = (Fn1) /2 ,             
T/2 · max |x[t]|   ≤   √ M−1 /2 = (Fn-11) /2 .

что представляется более точным.

Это означает, что динамический диапазон сигналов в свертке должен находиться в пределах   ПСАНВ±   по модулю   Fn-1   ( здесь M=Fn ) , т.е.

T/2 · max |x[t]| · max |h[t]|   ≤   (M1)/(2·2) = (Fn1)/(2·2) ,
          √ T/2 · max |x[t]|   ≤   √ M−1 /2 = (Fn-11) /2 .

Пусть, например,   M=Fn=F5=232+1   и   T=28 .  Тогда

28/2 · max |x[t]| · max |h[t]|   ≤   (232+1−1)/(2·2) = (F51)/(2·2) ,
       (28/2)1/2 · max |x[t]|   ≤   ( 232 )1/2 /2 = (F41) /2 ,
(27)1/2 11 · max |x[t]|   ≤   (F41) /2 =215 .      

Для комплексных (целочисленных) сигналов в свертке наибольшее значение по абсолютной величине (амплитуда) получается аналогично

2 · T/2 · max |(c)xre[t]| · max |(c)hre[t]|   ≤   (M1)/(2·2) = (Fn1)/(2·2) ,
       √ T · max |(c)xre[t]|   ≤   (Fn-11) /2 ,
       √ T · max |(c)xim[t]|   ≤   (Fn-11) /2 ,
т.е. здесь норма функции берётся и по вещественной и по мнимой компоненте комплексных данных.

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

2T · max |(c)x[t]| · max |(c)h[t]|   ≤   (M1)/2 = (Fn1) /2 ,        
             √ T · max |(c)x[t]|   ≤   √ M−1 /2 = (Fn-11) /2 .

и это представляется более точным.

Пусть, например,   M=Fn=F5=232+1   и   T=28 .  Тогда

24 · max |(c)x[t]|   ≤   (F41) /2 =215 .

Ясно, что с практической точки зрения это никуда не годится (слишком накладно — ведь при больших длинах последовательностей T подходящими оказываются только очень большие модули M=F6 или M=F7. С другой стороны, это условие чрезмерно осторожно и для многих практических приложений.

Более точная граница амплитуды входных сигналов может быть получена с помощью (среднеквадратичной или средне-a-тичной) нормы La

x[t] ║a = ( T1
T1
| x[t] |a   )1/a , a=1,2,...
t=0

Ограничения на амплитуду входных вещественных данных и выходного сигнала (т.е. свёртки) накладываются так:

A y = ║ y[t] ║a   ≤   (M1)/2 ,       
T · ║ x[t] ║a · ║ h[t] ║b   ≤   (M1)/2 ,       
(re)A x,h = ║ x[t] ║a   ≤   (M1)/2T   ,
(1/a)+(1/b)=1 , a,b=1,2,...

Для случая   a=b=2   имеем

(1/a)+(1/b) = (1/2)+(1/2) = 1 ,

A y = ║ y[t] ║2   ≤   (M1)/2 ,       
T · ║ x[t] ║2 · ║ h[t] ║2   ≤   (M1)/2 ,       
(re)A x,h = ║ x[t] ║2   ≤   (M1)/2T   ,
где
x[t] ║2 = ( T1
T1
( x[t] )2   )1/2 .
t=0

Пусть, например,   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 ) здесь не выполняется. Проверим для этого примера выполнение нормы

T · ║ x[t] ║2 · ║ h[t] ║2   ≤   (M1)/2       
4 · ( 41 . (22+|−2|2+12+02) )1/2 . ( 41 . (12+22+02+02) )1/2   ≤   (171)/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|   ≤   (√M1 )/2 = (2b/2)/2 ,   где   M=Fn=2b+1 ,
т.е. за удвоение длины свёртки приходится платить уменьшением вдвое числа битов (b/2) в двоичном представлении предельной амплитуды её результата. Это уже черезчур (а что занадто, то не здраво).

P.S. Возможно, что здесь одна из досадных "очепаток" в переводной литературе по ЦОС, т.к. и в самом оригинале они встречаются. Об оценке предельной амплитуды для комплексных данных см. в этом же разделе выше, т.е. там было

2T · | x1,T | · | x2,T |   ≤   (M1)/2 ,
                T · | xT |2   ≤   (M1)/4 ,
                                 √T · | xT |   ≤M1/2 = (Fn-11)/2 ,

т.е. xT ожидается в ПСАНВ± по модулю   Fn1 .

А вот для результата свёртки, это, по идее, должно выглядеть так
                           |y1,T| и |y2,T| ≤ (M1)/2 = (Fn1)/2 ,
т.е. yT получается в ПСАНВ± по модулю   Fn = M .

Однако, если вычислять ЦС не по определению (или не через одномерное ЧП Ферма), а посредством двумерной ЦС-2 (или многомерной ЦС-m), где

T = T1 х T2
то по крайней мере значение T в выражении для (re)A x,h (т.е. для нормы или "динамического" диапозона входных данных) будет заменено на T1 или T2 .

Пусть, например,



Это ещё до конца не дописано (только набросок) — 2 ноября 2005 года!


Максимальные длины T одномерных ЦС, вычисляемых через одномерные ЧПФ (1D)
и длины T одномерных ЦС, вычисляемых через ЦС-2 (2D).
Fn = 2b+1 b 1D
root=2
1D
root=√2
2D
root=2
2D
root=√2
F4
F5
F6
16
32
64
16
32
64
32
64
128
512
2048
8192
2048
8192
32768


Максимальные длины T/2 одномерных ЛС, вычисляемых через одномерные ЧПФ (1D)
и длины T/2 одномерных ЛС, вычисляемых через ЦС-2 (2D).
Fn = 2b+1 b 1D
root=2
1D
root=√2
2D
root=2
2D
root=√2
F4
F5
F6
16
32
64
16
32
64
32
64
128
256
1024
4096
1024
4096
16384



 
Вещи бывают великими и малыми
не токмо по воле судьбы и обстоятельств,
но также по понятиям каждого.
                             Козьма Прутков
                     "Мысли и афоризмы",139.

Ферма снова побеждает.

Это ещё до конца не дописано (только набросок) — 2 ноября 2005 года!

Разложение длины N одномерных ЦС на множители при вычислении через ЦС-2.
Fn = 2b+1 b 1D
root=2
1D
root=√2
2D
root=2
2D
root=√2
F4
F5
F6
16
32
64
16
32
64
32
64
128
256
1024
4096
1024
4096
16384



Модель вычисления одномерного ЧПФ через многомерное.


Теорема. ЧПФ

SN[w] = RN · xN[t] mod Fn

одномерного сигнала   xN[t]   длиной   N=N1·N2 , НбОД( N1, N2)≠1   вычисляется как двумерное ЧПФ (2мЧПФ) размерности N1хN2 от тензорной суммы из N2 циклических свёрток длины N1


 
(DIT) RN = ( RN1 RN2 )
 
 N21
( CN1(k) )( (N1, N2)QN )T .
  k=0

где CN1(k) = ( N11 RN1 dN1(k) RN11 ) — оператор циклической свёртки.

Транспонирование матрицы (DIT)RN даёт матричную модель (ММ) БА для ЧП Ферма с прореживанием по частоте (DIF)

(DIF) RN = ( (N1, N2)QN )  N11
( CN2(s) )( RN2 RN1 ) ,
  s=0

где CN2(s) = ( N21 RN2 dN2(s) RN21 ) — оператор циклической свёртки.

Вычисление ЧПФ начинается с перестановки (на 1-м этапе) входного вектора xN[t]   в вектор   zN[t]

 N21
( zN1(k) ) = zN[t] = ( (N1, N2)QN )T · xN[t] ,
  k=0
где zN1(k) — это k-й столбец двумерного представления zN1, N2 вектора zN[t] . Тогда полное выражение для одномерного ЧП Ферма примет вид

 
SN = RN xN = ( RN1 RN2 )
 
 N21
( CN1(k) zN1(k) ) .
  k=0

где оператор 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