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

Тензорный алгоритм для 2D-спектра



SN,N = RN,N xN,N Fn

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

— Русь, куда несёшься ты?
   Дай ответ?
— В интернет.
Андрей Вознесенский
2004 год.


Вычисление 2D-спектра по ТА Григоряна
  Тензорное представление 2D-спектра при N — простом
  Способ вычисления 2D-спектра по ТА при N — простом
  Тензорное представление 2D-спектра при N=2v
  Способ вычисления 2D-спектра по ТА при N=2v
  Оценка вычислительной сложности ТА при N=2v



 
Стихи не пишутся — случаются,
как чувства или же закат.
Душа — слепая соучастница.
Не написал — случилось так.

                  Андрей Вознесенский, 
             1973

Вычисление 2D-спектра по ТА Григоряна.

Изложим способ реализации вычисления 2мДПФ дискретных сигналов с помощью построения тензоров 3-го ранга. На основании тензорного представления 2D-спектра сигнала найдена система ортогональных функций, принимающих в каждой точке значения {-1, 0, +1}, которые составляют базис в пространстве сигналов, размерности которых равны степени двойки.


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

Наши спины — как лунные раковины,
что сомкнулись за нами сейчас.
Мы заслушаемся, прислонясь.
Мы — как формула жизни двоякая.

                   Андрей Вознесенский
                       "Замерли", 1965

Тензорное представление 2D-спектра при N — простом.

Рассмотрим исходный двумерный сигнал xN1N2[t1,t2] , размеры которого для простоты изложения будем считать равными, т.е. N1=N2=N , t1,t2=1÷N. (В статьях Григоряна все формулы приводятся с индексацией 1÷N, хотя несложно их преобразовать к виду с обычной индексацией 0÷N-1.) Тогда   2мДПФ   этого сигнала можно записать так

 
SNN [ w1,w2] =
 
N
t1=1
N
t2=1
xNN [ t1,t2] · WN(w1t1 + w2t2) ,   w1,w2=1, ... , N ,
где WN = exp(2πj/N) .

Для произвольных значений w1,w2,t=1÷N определим трёхмерное множество отсчётов двумерного сигнала — (тензор сигнала 3-го ранга)

T3NNN [ w1,w2,t ] = { (t1,t2);   t1,t2=1÷N,   w1t1 + w2t2 t (mod N) }     
и трёхмерное множество сумм (тензор сумм 3-го ранга)
 
s3NNN [ w1,w2,t ] =
 
N
t1=1
N
t2=1
xNN [ t1,t2 ] ,
для (t1,t2) T3NNN [ w1,w2,t ] .

Тогда   2мДПФ   исходного сигнала можно переписать, как сумму взвешенных элементов   тензора сумм 3-го ранга

 
SNN [ w1,w2] =
 
N
t=1
s3NNN [w1,w2,t ] · WNt ,   w1,w2=1, ... , N .

Таким образом, введение   тензора сумм 3-го ранга   s3NNN [ w1,w2,t ]   позволяет представить   2мДПФ   SNN [ w1,w2]   исходного сигнала через одномерные   N-точечные   векторы

          sNw1,w2 [t] = ( s3NNN [w1,w2,1] , ... , s3NNN [w1,w2, N] ) ,
образованные из элементов   тензора сумм 3-го ранга.

Очевидно, что такое тензорное представление спектра взаимно однозначно и обладает следующим важным свойством. Обозначим через   a=a (mod N) , где a≠N и   N=N , тогда для любых   w1,w2,k   имеем

 
SNN [ k·w1,k·w2] =
 
N
t=1
s3NNN [ w1,w2,t ] · WNk·t ,   w1,w2=1, ... , N .

Действительно, в силу периодичности   2мДПФ   справедливо

 
SNN [ k·w1,k·w2] =
 
N
t1=1
N
t2=1
xNN [ t1,t2] · WNk·(w1t1 + w2t2) =  
= SNN [ k·w1,k·w2].
       

т.к. для заранее выбранного отсчёта 2D-спектра   (w1,w2)   элементы тензора сигнала 3-го ранга
(t1,t2) T3NNN [ w1,w2,t ]
разбивают область определения сигнала
  ОО( xNN [ t1,t2] ) = { (t1,t2);   t1,t2=1÷N }
так, что объединение   N-непересекающихся субтензоров   тензора сигналов при выбранном образующем отсчёте 2D-спектра (w1,w2) покрывает всю область определения сигнала
 
ОО( xNN [ t1,t2] ) =
 
N
t=1
T3NNN [ w1,w2,t ] ,
причём при   a≠b   субтензоры не пересекаются, т.е.
            T3NNN [ w1,w2,a]     T3NNN [ w1,w2,b] = .

Иными словами,   для разных отсчётов   2D-спектра   (w1,w2)   при помощи N-точечного   одномерного ДПФ вектора сумм

          sNw1,w2 [t] = ( s3NNN [ w1,w2,1 ] , ... , s3NNN [ w1,w2, N ] ) ,
можно получить спектр   2мДПФ   в точках вида   (k·w1,k·w2) ,   которые образуют N-точечную   циклическую группу отсчётов 2D-спектра

TN [ w1,w2] = { (k·w1,k·w2);   k=1÷N }

с выбранным образующим отсчётом 2D-спектра   (w1,w2) .

Например, пусть N=8, тогда для образующего отсчёта   (w1,w2)=(1,1)   по компонентам вектора   s38,8,8 [ w1,w2,t ] ,  t=1÷8 , получим значения 2D-спектра сигнала в точках (1,1), (2,2), ... , (8,8) , а   если выбрать образующий отсчёт (w1,w2)=(1,2) , то — в точках (1,2), (2,4), (3,6), (4,8), (5,2), (6,4), (7,6), (8,8).


 
Загляжусь ли на поезд с осенних откосов,
забреду ли в вечернюю деревушку —
будто душу высасывает насосом,
будто тянет вытяжка или вьюшка,
будто что-то случилось или случится —
ниже горла высасывает ключицы.

Или ноет какая вина запущенная?
Или женщину мучил — и вот наказанье?
Сложишь песню — отпустит,
                         а дальше — пуще.
Показали дорогу, да путь заказали.
Точно тайный горб на груди таскаю —
тоска какая!

Я забыл, какие у тебя волосы.
я забыл, какое твоё дыханье,
подари мне прощенье,
                     коли виновен,
а простивши — опять одари виною.

                     Андрей Вознесенский,
                           "Тоска", 1967

Способ вычисления 2D-спектра по ТА при N — простом.

Покажем, как без лишних вычислений получить 2D-спектр сигнала. Очевидно, что для этого необходимо оптимальным образом выбрать образующие точки 2D-спектра (w1,w2), чтобы образованные ими циклические группы отсчётов 2D-спектра    TN[w1,w2]    заполняли всю область определения 2D-спектра с минимальными пересечениями, т.е.

 
ОО( SNN [ w1,w2] ) =
 
 
JNN
TN [ w1,w2] ,   (w1,w2) JNN .

Для N — простого такое покрытие области определения 2D-спектра существует. Например, в качестве множества образующих отсчётов   2D-спектра JNN   можно взять

JNN = { (1,p); p=1÷N } (N,1)  
или
JNN = { (p,1); p=1÷N } (1, N) ,

причём при любых не равных отсчётах   (a,b)≠(c,d)   из множества взятых отсчётов 2D-спектра   JNN , образованные ими циклические группы отсчётов 2D-спектра имеют минимальное пересечение
TN[a,b]     TN[c,d] = (N,N) .

Таким образом, при N простом 2D-спектр исходного двумерного сигнала можно вычислить с помощью   card( JNN ) = (N+1)   процедур одномерного   N-точечного ДПФ.

При   N=2v   оптимального покрытия области определения 2D-спектра при выше рассмотренном тензоре сумм 3-го ранга не существует, хотя достаточно взять множество

JNN = { (s,p); p=1÷N } { (2k,s); k=1÷N/2 }  
или
JNN = { (p,s); p=1÷N } { (s,2k); k=1÷N/2 } ,

мощность которых   card( JNN ) = N+N/2 = 3N/2 , причём   s — простое.

В статье для   N=2v   показан даже несколько громоздкий способ, как исключить все лишние вичисления из одномерных ДПФ с идеей, похожей на алгоритм Split-Radix, однако через 2 года в статье А.М.Григорян приводит более элегантное решение для   N=2v .

И так, идём дальше.


 
"И так, за мной мой читатель..."
                               Михаил Булгаков.

 

Когда я предаю бумаге
черты твоей поспешной красоты,
я думаю не о рифмовке —
с ума бы не сойти!

А за оградой монастырской,
как спирт ударит нашатырный,
послегрозовые сады —
с ума бы не сойти!

Когда отчётливо и грубо
стрекозы посреди полей
стоят, как чёрные шурупы
стеклянных, замерших дверей,

такое растворится лето,
что только вымолвишь:"Прости,
за что мне это, человеку?
С ума бы не сойти!"

Куда-то душу уносили —
забыли принести.
"Господь, — скажу, — или Россия,
назад не отпусти!"

              Андрей Вознесенский,
         1970

Тензорное представление 2D-спектра при N=2v.

Рассмотрим важный для практики случай, когда у входного сигнала все   N1=N2=N=2v. В силу симметрии комплексных экспонент   exp(2πj/N) , относительно точки   N/2 , а именно

WNt+N/2 = −WNt ,   t=1÷N/2 ,
можно дополнительно построить спаренный тензор разностей 3-го ранга
ss3NNN/2 [ w1,w2,t ] = s3NNN [ w1,w2,t ] − s3NNN [ w1,w2,t+N/2 ] ,
при t=1÷N/2 .

Тогда   2мДПФ   исходного сигнала перепишется, как сумма взвешенных элементов   спаренного тензора разностей 3-го ранга

 
SNN [ w1,w2] =
 
N/2
t=1
ss3NNN/2 [ w1,w2,t ] · WNt ,   w1,w2=1, ... , N .

Аналогично выше рассмотренному тензору сумм 3-го ранга здесь также имеет место формула

 
SNN[ k·w1,k·w2] =
 
N/2
t=1
ss3NNN/2 [ w1,w2,t ] · WNk·t ,   w1,w2=1, ... , N .

Действительно, т.к. (опять же в силу симметрии)

WNk·(t+N/2) = −WNk·t ,   t=1÷N/2 ,
для всех нечётных   k=2n−1 , справедливо
 
SNN[ k·w1,k·w2] =
 
N/2
t=1
ss3NNN/2 [ w1,w2,t ] · WNk·t =
N/2
=
t=1
s3NNN/2 [ w1,w2,t ] ·WNk·t N/2
t=1
s3NNN/2 [ w1,w2,t+N/2 ] ·WNk·t =
N
=
t=1
s3NNN [ w1,w2,t ] ·WNk·t =  
SNN[k·w1,k·w2] ,
 
т.е.
 
SNN[ k·w1,k·w2] =
 
N/2
t=1
ss3NNN/2 [ w1,w2,t ] ·WNk·t =  
SNN [ k·w1,k·w2] ,
 

Тогда, делая подстановку   k=2n−1 , запишем

 
SNN [ (2n−1)·w1,(2n−1)·w2] =
 
N/2
t=1
ss3NNN/2 [ w1,w2,t ] · WN(2n−1)·t =
= N/2
t=1
  ss3NNN/2 [ w1,w2,t ] · WNt · WN2nt =
= N/2
t=1
( ss3NNN/2 [ w1,w2,t ] · WNt ) WN/2nt ,
т.е.
 
SNN [ (2n−1)·w1,(2n−1)·w2] =
 
N/2
t=1
( ss3NNN/2 [ w1,w2,t ] · WNt ) WN/2nt .

Рассматривая полученную формулу для всех   n=1÷N/2 , находим, что в результате выполнения   N/2-точечного   ДП Фурье   вектора, образованного из взвешенных множителем   WNt элементов спаренного тензора разностей 3-го ранга

  (W·ssN/2)w1,w2 [t] =  
  = ( ss3NNN/2 [ w1,w2,1 ] · WN1 , ... , ss3NNN/2 [ w1,w2, N/2 ] · WNN/2 )

можно определить значения 2D-спектра исходного сигнала в тех точках, которые составляют нечётную половину соответствующей   N-точечной   циклической группы отсчётов   2D-спектра   TN [ w1,w2]   с образующим отсчётом (w1,w2) , т.е. в отсчётах
TTN/2 [ w1,w2] = { ((2n−1)·w1, (2n−1)·w2);   n=1÷N/2 } .     
Назовём   TTN/2 [ w1,w2]   N/2-точечной   спаренной циклической группой с образующим отсчётом 2D-спектра   (w1,w2) .

Например, для образующего отсчёта (1,1) одномерное   N/2-точечное

  ДПФ ( (W·ssN/2)1,1 [t] ) =  
  ДПФ ( ss3NNN/2[1,1,1] · WN1 , ... , ss3NNN/2[1,1, N/2] · WNN/2 )  

определяет 2D-спектральные составляющие исходного двумерного сигнала в отсчётах (1,1), (3,3), (5,5), ... , (N-1,N-1) .


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

                 Андрей Вознесенский,
            1972

Способ вычисления 2D-спектра по ТА при N=2v.

Построим эффективный алгоритм вычисления 2D-спектра по ТА для случая, когда у входного сигнала все   N1=N2=N=2v . Очевидно, что, как и в случае с простым N , для этого необходимо оптимальным образом выбрать образующие точки 2D-спектра (w1,w2), чтобы соответствующие   N/2-точечные   спаренные циклические группы   TTN/2 [ w1,w2]   заполняли всю область определения 2D-спектра без пересечения, т.е.

 
ОО( SNN [ w1,w2] ) =
 
 
JNN
TTN/2 [ w1,w2] ,   (w1,w2) JNN .

Так как для всех   i=1÷N   очевидны равенства:

2i · TTN/2[1,n+N/2i] = TTN/2[2i·1,2i·n] ,
2i · TTN/2[2·(n+N/2i+1),2·1] = TTN/2[2i·2n,2i·1] ,         
то
 
ОО( SNN [ w1,w2] ) =
 
         
=   v=log2 N
i=0
{ N/2i
n=1
TTN/2[2i·1,2i·n]   N/2i+1
n=1
TTN/2[2i·2n,2i·1]   } ,

причём при любых   (a,b)≠(c,d)   из множества   JNN   спаренные циклические группы отсчётов 2D-спектра не пересекаются, т.е.
TTN/2[a,b]     TTN/2[c,d] = .

И более этого, всякое множество отсчётов 2D-спектра   JNN , с помощью которого можно оптимально (т.е. без пересечения циклических групп) покрыть область определения 2D-спектра   ОО( SNN [ w1,w2] )   с минимальной для этого мощностью, эквивалентно множеству

 
JNN =
 
v=log2 N
i=0
2i · JN/2i = JN     2·JN/2     4·JN/4   ...   N·J1 ,
мощность которого   card( JNN ) = 3N 2 .

Действительно,

 
card( JNN ) =
 
v=log2 N
i=0
 
card( 2i · JN/2i ) =
 
v=log2 N
i=0
(3/2) · N/2i = 3N 2 .

Далее очевидно, что если образующий отсчёт 2D-спектра   (w1,w2)   взят из множества   2i·JN/2i   для некоторого i {0,...,v=log2 N} , то мощность, образованной этим отсчётом, спаренной циклической группы   TTN/2 [ w1,w2]   равна   N/2i+1 . Поэтому в оптимальном покрытии области определения 2D-спектра   ОО( SNN [ w1,w2] ) , объединяющем   3N2   различных (т.е. не пересекающихся) спаренных циклических групп   TTN/2 [ w1,w2] ,   3N/2   из них содержат по   N/2   элементов каждая, следующие   3N/4   содержат по   N/4   таких элементов и т.д. Отсюда следует, что для определения полного 2D-спектра исходного двумерного сигнала размера   NхN   при   N=2v   достаточно выполнить   3N/2   одномерных   N/2-точечных   ДПФ,   3N/4   одномерных   N/4-точечных   ДПФ и т.д.

Иными словами, для   n=1÷N/2i+1   имеет место очевидное равенство

SNN[ (2n−1)·w1,(2n−1)·w2] =    
=  
N/2i+1
t=1
( ss3NNN/2 [ w1,w2,2i·t ] · (WN/2i)t ) · (WN/2i+1)nt

Рассматривая полученную формулу для всех   i {0,...,v=log2 N} , находим, что выполнение   N/2-точечного   ДП Фурье   вектора   W·ssN/2w1,w2 [t]   эквивалентно выполнению   N/2i+1-точечного   ДП Фурье   над сжатым вектором (т.е. вектором из меньшего числа точек), образованным из взвешенных множителем   (WN/2i)t элементов спаренного тензора разностей 3-го ранга

  (W·ssN/2i+1)i, w1,w2 [t] =
  (ss3NNN/2 [ w1,w2,1] · (WN/2i)1
, ... ,
ss3NNN/2 [ w1,w2, N/2i+1] · (WN/2i)N/2i+1) .
Таким образом, вычисление 2D-спектра двумерного сигнала сводится к вычислению   N/2i+1-точечных   одномерных ДП Фурье

SNN [ (2n−1)·w1,(2n−1)·w2] = ДПФ ( (W·ssN/2i+1)(i,w1,w2) [t] ),   n=1÷N/2i+1 .

Отметим здесь, что описанный ТА вычисления 2D-спектра существенно отличается от хорошо известного алгоритма редуцированного ДПФ Нуссбаумера , выполняемого с помощью сложных полиномиальных преобразований (ПП). Действительно, для   N=2v   в таком алгоритме вычисление   NхN-точечного 2мДПФ осуществляется с помощью ПП и посредством не только   3N/2   N-точечных   (а не N/2-точечных как в ТА)   редуцированных одномерных ДПФ, но ещё и   N/2хN/2-точечного   ДПФ, которое в свою очередь также аналогичным образом вычисляется посредством   3N/4   N/2-точечных   (а не N/4-точечных как в ТА)   редуцированных одномерных ДПФ и ещё   N/4хN/4-точечного   ДПФ и т.д. Поэтому предлагаемый ТА для 2мДПФ очевидно эффективнее указанного редуцированного ДПФ на основе ПП.

NB. Однако, потом Григорян А.М. согласился с тем, что вычислительная сложность его ТА для БПФ2 (по числу вещественных умножений) совпадает с той, которая у алгоритма, использующего ПП Нуссбаумера.

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


 
Не славы и не коровы,
не шаткой короны земной —
пошли мне, господь, второго, —
чтоб вытянул петь со мной!

Прошу не любви ворованной,
не милости на денёк —
пошли мне, господь, второго, —
чтоб не был так одинок.

Чтоб было с кем пасоваться,
аукаться через степь,
для сердца, не для оваций,
на два голоса спеть!

Чтоб кто-нибудь меня понял,
не часто, ну, хоть разок.
Из раненых губ моих поднял
царапнутый пулей рожок.

И пусть мой напарник певчий,
забыв, что мы сила вдвоём,
меня, побледнев от соперничества,
прирежет за общим столом.

Прости ему. Пусть до гроба
одиночеством окружён.
Пошли ему, бог, второго —
такого, как я и он.

                 Андрей Вознесенский,
                 "Песня акына", 1971

Оценка вычислительной сложности ТА при N=2v.

Подсчитаем объём нетривиальных операций умножения O( mult (FOURNN) ) на поворачивающие экспоненты   WNt , необходимый для выполнения ТА вычисления   NхN-точечного   2мДПФ.

 
O( mult (FOURNN) ) =
 
(log2 N)−2
i=0
 
3N/2i · ( O( mult (FOURN/2i ) + N/2i 2 ) ,
 
где   O( mult ( FOURN/2i ) ) — мультипликативная сложность   N/2i-точечного   одномерного ДПФ, а суммирование происходит только до   (log2 N)−2 , т.к. очевидно, что последние 4-х и 2-х точечные ДПФ операций умножения на комплексные экспоненты не содержат.

Тогда получим неулучшаемую оценку числа умножений, выраженную через оценки для одномерного ДПФ

 
O( mult (FOURNN) )
 
(log2 N)−2
= 3N    
    i=0
 
1/2i · O( mult (FOURN/2i ) ) + N2 6N + 8 .
 

Чтобы получить точную минимальную оценку числа умножений, т.е. O( mult (FOURNN) ) , очевидно, в эту формулу нужно подставить точные оценки O( mult (FOURN/2i) )   для всех степеней двойки   2i=8,16, ... , N .

Не останавливаясь на одномерном случае, отметим, что все вышеприведенные рассуждения о спаренном тензорном представлении 2D-спектра легко переносятся и на случай одномерного сигнала, причём точные оценки указанных операций умножения   O( mult( FOURN/2i) )   равны для степеней двойки   2i 8  

O( mult (FOURN/2i) ) = 2i · (log2(2i) − 3 ) + 2 .

Подставляя полученную оценку O( mult (FOURN/2i) )   для одномерных ДПФ, получим при больших   N   оценку для 2мДПФ

O( mult (FOURNN) ) = N2/2 · ( log2 N 5/2 ) − 8 ( log2 N 1 ) .

NB. Таким образом, с помощью введенного выше спаренного тензорного представления Фурье-спектра двумерного сигнала, получена точная оценка для операций комплексного умножения на нетривиальные поворачивающие множители, которых достаточно для вычисления 2мДПФ.

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


 
Ну что тебе надо ещё от меня?
Чугунна ограда. Улыбка темна.
Я музыка горя, ты музыка лада,
ты яблоко ада, да не про меня!

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

Смеялась:"Ты ангел?" — я лгал, как змея.
Сказала:"Будь смел" — не вылазил из спален. 
Сказала:"Будь первым" — я стал гениален,
ну что тебе надо ещё от меня?

Исчерпана плата до смертного дня.
Последний горит под твоим снегопадом.
Был музыкой чуда, стал музыкой яда,
ну что тебе надо ещё от меня?

Но и под лопатой спою, не виня:
"Пусть я удобренье для божьего сада,
ты — музыка чуда, но больше не надо!
Ты случай досады. Играй без меня".

И вздрогнули складни, как створки окна.
И вышла усталая и без наряда.
Сказала:"Люблю тебя. Больше нет сладу.
Ну что тебе надо ещё от меня?"

                       Андрей Вознесенский,
                 1971

 

Левый крайний!

Самый тощий в душевой,
самый страшный на штрафной,
бито стёкол — боже мой!
И гераней...
Нынче пулей меж тузов,
блещет попкой из трусов
левый крайний.
 
Левый шпарит, левый лупит.
Стадион нагнулся лупой,
прожигательным стеклом
над дымящимся мячом.

Правый край спешит заслоном,
он сипит, как сто сифонов,
ста медалями увенчан,
стольким ноги поувечил.

Левый крайний, милый мой,
ты играешь головой!

О, атака до угара!
Одурение удара.
Только мяч,
           мяч,
               мяч,
только — вмажь,
               вмажь,
                     вмажь!

"Наши — ваши" — к богу в рай...
Ай!
Что наделал левый край!..

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

Левый крайний...

Не сбываются мечты,
с ног срезаются мячи.
И под краном
ты повинный чубчик мочишь,
ты горюешь
           и бормочешь:
"А ударчик — самый сок,
прямо в верхний уголок!"

                   Андрей Вознесенский
                       "Футбольное", 1962

ММ 2мЧПФ     ▲ В начало текущей     ТЧП Гаусса






Последнее обновление 16.09.2013

© 2005 г., Александр Тимофеев, г.Харьков, Украина, eMail: atimopheyev@yahoo.com