Você está na página 1de 111

Universidade Federal de Pernambuco

Centro de Tecnologia e Geocincias


Programa de Ps-graduao em Engenharia Eltrica

Raimundo Corra de Oliveira

Novos Algoritmos Rpidos


para Computao de
Transformadas Discretas

Recife, Abril de 2013.

Raimundo Corra de Oliveira

Novos Algoritmos Rpidos


para Computao de
Transformadas Discretas
Tese submetida ao Programa de PsGraduao em Engenharia Eltrica da Universidade Federal de Pernambuco como parte dos
requisitos para obteno do grau de Doutor

em Engenharia Eltrica

Orientador: Prof. Ricardo Menezes Campello de Souza, Ph.D.

Recife, Abril de 2013.

c
Raimundo
Corra de Oliveira, 2013

Agradecimentos
Aqui expresso meus sinceros agradecimentos s pessoas que contriburam direta e indiretamente para o desenvolvimento desta tese. Em especial agradeo:
minha famlia, em especial, a minha V (Benedita, em memria), a minha Me (Maria
de Nazar), a minha Tia (Sebastiana), a minha esposa (Rosangela) e lha (Roberta), pelos
apoios e incentivos constantes.
famlia Bnvent, Jean, Raimunda e Monique, pelos incentivos e apoio em sua aconchegante
residncia em Recife.
Ao meu orientador, professor Ricardo Campello, por me aceitar e conar em mim como
orientado no doutorado; pelas contribuies, motivaes e correes; por sua disponibilidade
e vibrao e por ser um excelente professor. Alm disso, uma tima pessoa. Ao professor
Hlio Magalhes, pelas valorosas contribuies e incentivos. Ao professor Edval dos Santos,
por permitir a utilizao do Laboratrio de Nanodispositivos (LDN) para implementao, em
FPGA, do algoritmo proposto.
Ao professor Rafael Lins, pelo apoio no decorrer do Dinter, sendo o coordenador do projeto DINTER que muito contribuir para a regio Norte.
Aos amigos do Dinter, que me ajudaram no desenvolvimento desta tese. Em especial ao
Jucimar, Ricardo, Ernande e Rodrigo, pelas suas valorosas sugestes, contribuies e incentivos em nossas interessantes discusses.

Raimundo Corra de Oliveira

Universidade Federal de Pernambuco


17 de Abril de 2013

Resumo da Tese apresentada ufpe como parte dos requisitos necessrios para a obteno
do grau de Doutor em Engenharia Eltrica

Novos Algoritmos Rpidos para


Computao de Transformadas Discretas
Raimundo Corra de Oliveira

Abril/2013

Orientador: Prof. Ricardo Menezes Campello de Souza, Ph.D.


rea de Concentrao: Comunicaes
Palavras-chaves: Transformada Discreta de Fourier, Transformada Discreta de Hartley,
Transformadas Rpidas
Nmero de pginas: 110
Esta tese apresenta novos algoritmos rpidos para computao das transformadas discretas de Fourier (DFT) e de Hartley (DHT), denominados FFT e FHT, respectivamente. Os
algoritmos FFT so baseados em uma expanso em srie matricial de Laurent da matriz
de transformao da DFT de comprimento N 4(mod 8). A complexidade multiplicativa
destes apresenta um ganho em relao aos algoritmos Cooley-Tukey base-2 e base-4. Os algoritmos FHT so baseados na expanso da matriz de transformao da DHT de comprimento

N 0(mod 4). Estes algoritmos rpidos apresentaram um melhor desempenho que algoritmos conhecidos para computao da DHT. Alm disso, so apresentados algoritmos timos,
ou seja, de complexidade multiplicativa mnima, para esta transformada, para os comprimentos N = 8, 12, 16 e 24. Uma implementao em FPGA de um dispositivo que calcula as duas
transformadas apresentado; o dispositivo utilizado para implementar o projeto foi um Xilinx
Spartan 3E.

Abstract of Thesis presented to ufpe as a partial fulllment of the requirements for the
degree of Doctor in Electrical Engineering

New Fast Algorithms for Computing


Discrete Transforms
Raimundo Corra de Oliveira

April/2013

Supervisor: Prof. Ricardo Menezes Campello de Souza, Ph.D.


Area of Concentration: Communications
Keywords: Discrete Fourier Transforms, Discrete Hartley Transforms, Fast Transforms
Number of pages: 110
This thesis presents new fast algorithms for computing the discrete Fourier transform (DFT)
and the discrete Hartley transform (DHT), called FFT and FHT, respectively. The FFT
algorithms are based on the Laurent series matrix expansion of the DFT transformation
matrix of blocklength N 4(mod 8) and present a better performance than the CooleyTukey radix-2 and radix-4 algorithms. The FHT algorithms are based on an expansion of
the DHT transform matrix of blocklength N 0(mod 4) and present a better performance
than the algorithms known in the literature for computing the DHT. Specically, FHTs with
minimum multiplicative complexity for blocklengths N = 8, 12, 16 and 24 are presented. An
FPGA implementation of a device that computes both the FFT and the FHT, based on a
Xilinx Spartan 3E platform, is proposed.

Lista de Figuras

2.1
2.2
2.3
3.1

3.2
3.3
3.4
3.5

Uma sequncia peridica e sua DFS. . . . . . . . . . . . . . . . . . . . . . . .


Pontos no crculo unitrio ilustrando a amostragem de frequncia de um sinal
peridico, cujo comprimento 8. . . . . . . . . . . . . . . . . . . . . . . . . .
Grco ilustrando a Relao entre a DTFT e a DFS. . . . . . . . . . . . . . .
Esquema ilustrativo para a FFT Cooley-Tukey: observar a indexao de 1-D
para 2-D. Apenas os ndices das componentes dos vetores de entrada e de sada
so indicados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Decomposio da sequncia de entrada at N=2 na FFT de Cooley-Tukey base
2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clula bsica (borboleta) para computao da FFT de Cooley-Tukey base 2. .
Clula bsica simplicada para a computao da FFT de Cooley-Tukey base 2.
Exemplo da FFT de Good-Thomas para N = 15. . . . . . . . . . . . . . . . .

21
23
24

30
32
32
32
33

4.1
4.2

Diagrama para computao da parte real de uma DFT de comprimento N = 12. 46


Diagrama para computao da parte imaginria de uma DFT de comprimento
N = 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1

5.7
5.8

Esquema para a computao da FHT de comprimento N = 8. Destaque para


as duas multiplicaes reais requeridas. . . . . . . . . . . . . . . . . . . . . . .
Esquema para a computao da FHT de comprimento 16, destacando-se a
existncia da FHT de comprimento 8 no esquema. . . . . . . . . . . . . . . . .
Complexidade multiplicativa para os algoritmos FHT (base-2, Split-Radix e
expanso matricial) e limite inferior de Heideman, em funo do comprimento
N da transformada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algoritmo timo para a computao de uma DHT de comprimento N = 12. .
Diagrama para representao da transformada de Walsh-Hadamard para comprimento N = 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplicaes para computar a DHT de comprimento 16, envolvendo as componentes mpares da sequncia h a ser transformada. . . . . . . . . . . . . . .
Algoritmo timo para a computao de uma DHT de comprimento N = 16. .
Algoritmo timo para a computao de uma DHT de comprimento N = 24. .

6.1

Arquitetura bsica de um dispositivo FPGA. . . . . . . . . . . . . . . . . . . .

5.2
5.3

5.4
5.5
5.6

60
67

68
72
73
74
79
80
82

6.2
6.3
6.4
6.5
6.6
6.7
6.8
7.1

Viso geral da estrutura do dispositivo para computar a FFT/FHT. . . . . . .


Resultado de simulao quando a operao est selecionada para computar a
DHT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultado de simulao quando a operao est selecionada para computar a
DFT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitetura do algoritmo FFT/FHT. O bloco de computao aritmtica corresponde ao bloco ncleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arquitetura do bloco ncleo. Este bloco usado por ambas as transformadas
(Veja Figura 6.5). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulao implementada em SimulinkTM do algoritmo FFT/FHT de comprimento 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementao em SimulinkTM da FFT/FHT de comprimento 16. . . . . . . .
Complexidade multiplicativa para os algoritmos FHT (base-2, Split-Radix e expanso matricial) e limitante inferior de Heideman, em funo do comprimento
N da transformada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84
85
86
87
87
88
91

94

A.1 Esquema para a computao aditiva referente matriz do exemplo A.2. Um


possvel vetor de entrada (v) e um vetor de sada (V ) ilustram o comportamento
da implementao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Lista de Tabelas

2.1

Relao entre caractersticas de tempo de um sinal e sua representao de Fourier 20

4.1
4.2
4.3

Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent .


Complexidade aditiva da FFT baseada na Srie Matricial de Laurent . . . . .
Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent
para comprimentos potncias de 2 . . . . . . . . . . . . . . . . . . . . . . . . .
Complexidade aditiva da FFT baseada na Srie Matricial de Laurent para
comprimentos potncias de 2 . . . . . . . . . . . . . . . . . . . . . . . . . . .

48
48

Descrio das classes Cm do cas. . . . . . . . . . . . . . . . . . . . . . . . . .


Classes para N = 20. Exemplo 5.1. . . . . . . . . . . . . . . . . . . . . . . . .
Classes para N = 16. Exemplo 5.1. . . . . . . . . . . . . . . . . . . . . . . . .
Classes para N = 24. Exemplo 5.2. . . . . . . . . . . . . . . . . . . . . . . . .
Descrio das classes do cas para N = (2k)4. . . . . . . . . . . . . . . . . . .
Complexidade do algoritmo FHT baseado em expanso matricial, para uma
sequncia real, em termos do nmero de multiplicaes em ponto utuante, e
dos algoritmos FHT base-2, base-4 e Split-Radix. . . . . . . . . . . . . . . . .
Complexidade aditiva do algoritmo FHT baseado em expanso matricial e dos
algoritmos FHT base-2, base-4 e Split-Radix. . . . . . . . . . . . . . . . . . . .

53
53
53
55
55

4.4

5.1
5.2
5.3
5.4
5.5
5.6

5.7

6.1
6.2
6.3

7.1
7.2

Recursos utilizados no dispositivo FPGA para implementao da FFT/FHT


de comprimento 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Valores da DFT/DHT gerados via MatLabTM . . . . . . . . . . . . . . . . . . .
Valores da simulao comportamental (Xilinx) da DFT/DHT de comprimento
16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent .
Complexidade multiplicativa de algoritmos FFT em termos do nmero de multiplicaes reais no triviais, para computar a DFT de uma sequncia real de
comprimento N (N = 2r ): Radix-2, Rader-Brenner, Laurent-FFT, limitante
de Heideman. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49
49

68
69

85
89
90
93

93

Lista de Algoritmos

5.1
5.2

Computando as pr-adies e multiplicaes em ponto utuante. . . . . . . . .


Computando o vetor das ps-adies. . . . . . . . . . . . . . . . . . . . . . . .

10

61
61

Sumrio

1 Introduo
1.1 Contribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Organizao da Tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
17
17

19
19

A Transformada Discreta de Fourier - DFT


2.1 Introduo . . . . . . . . . . . . . . . . . . . . . .
2.2 Representao de sequncias peridicas: A srie
(DFS) . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 A transformada de Fourier de sinais peridicos
2.4 A transformada discreta de Fourier: DFT . . . .
2.5 A transformada discreta de Hartley: DHT . . .
2.6 Consideraes Finais . . . . . . . . . . . . . . . .
A Transformada Rpida de Fourier
3.1 O Algoritmo de Cooley-Tukey . . . . .
3.1.1 O algoritmo de Cooley-Tukey base 2:
3.2 O algoritmo de Good-Thomas . . . . .
3.3 O algoritmo Rader-Primo . . . . . . .
3.4 Consideraes Finais . . . . . . . . . .

. . . . .
discreta
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

. .
de
. .
. .
. .
. .
. .

. . . . . . . . . . . .
dizimao no tempo .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .

.
.
.
.
.

. . . . .
Fourier
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

.
.
.
.
.

. . . .
. . . . .
. . . .
. . . .
. . . .

Transformada Rpida de Fourier baseada em Srie Matricial de


Laurent
4.1 DFT como uma srie matricial de Laurent . . . . . . . . . . . . . . .
4.2 O novo algoritmo FFT . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Uma FFT para blocos de comprimento N = 12 . . . . . . . . . . . . .
4.4 Comentrios sobre a FFT para outros comprimentos . . . . . . . . .
4.5 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20
22
23
26
26
28
28
30
33
35
36

37
37
40
41
47
50

Expanso Matricial para Clculo da Transformada Discreta de


Hartley
51
5.1 Expandindo a matriz da DHT . . . . . . . . . . . . . . . . . . . . . . .
51
5.2 Uma FHT de comprimento N = 8 . . . . . . . . . . . . . . . . . . . . .
58

5.3
5.4
5.5
5.6
5.7
6

Uma FHT de comprimento N = 16 . .


Otimizando a FHT de comprimento N
Otimizando a FHT de comprimento N
Otimizando a FHT de comprimento N
Consideraes Finais . . . . . . . . . .

. . .
= 12
= 16
= 24
. . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

61
69
71
75
78

Uma Implementao em FPGA das Transformadas de Fourier


e Hartley de Comprimento 16 Baseada em Sries Matriciais de
Laurent
6.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Field Programmable Gate Arrays (FPGA) . . . . . . . . . . . . . . .
6.3 O Algoritmo FFT/FHT . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Metodologia de projeto e arquitetura . . . . . . . . . . . . . . . . . .
6.4.1 Especicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.2 Descrio VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.3 Simulao Comportamental . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.4 Sntese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.5 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5 Resultados de Simulao . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81
81
81
82
83
84
84
84
85
86
88
89

Concluses
7.1 A Transformada Rpida de Fourier . . . . . . . . . . . . . . . . . . . .
7.2 A transformada rpida de Hartley . . . . . . . . . . . . . . . . . . . .
7.3 Sugestes para Trabalhos Futuros . . . . . . . . . . . . . . . . . . . .

92
93
94
95

Referncias

96

Apndice A Fatorando uma Matriz A(nn) em Matrizes Bielementares106


A.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
A.2 Procedimento para Fatorao da Matriz . . . . . . . . . . . . . . . . . 107
Apndice B Artigos Publicados

110

captulo

Introduo

As ideias bsicas sobre a anlise de Fourier remontam a 1822, quando Jean Baptiste
Joseph Fourier investigou a propagao de calor em corpos slidos [1, 2]. Nesse contexto,
uma das principais ferramentas desenvolvidas foi a Transformada de Fourier, a qual tem um
importante papel em vrias reas do conhecimento, especialmente em processamento de sinais
[3, 4]. Algumas reas do conhecimento que tem se beneciado da anlise de Fourier so:

Astronomia [5];
Imagens Mdicas [68];
Processamento de Voz [913];
udio digital [1417];
Processamento Digital de Imagens [1821];
Criptograa [22];
Codicao de Canais [23];
Marcas dgua [24, 25];
Comunicaes [26].
A essncia da transformada de Fourier de um sinal a sua decomposio em um somatrio
de senides ortogonais de diferentes frequncias [27, 28]. Em casos prticos, sua avaliao no
realizada analiticamente, mas numericamente e, na maioria dos casos, no existe nem mesmo
uma expresso analtica para o sinal a ser analisado (e.g. sinal de voz). A Transformada Discreta de Fourier (DFT, do ingls Discrete Fourier Transform) uma ferramenta que computa

14

o espectro de frequncia de uma sequncia nita de comprimento N , com uma complexidade


computacional de N 2 multiplicaes e N (N 1) adies. O sucesso da aplicao de tcnicas de
transformao devido, principalmente, existncia dos chamados "algoritmos rpidos"[29].
Com isso, tcnicas para computao de transformadas discretas com uma baixa complexidade multiplicativa vem sendo objeto de interesse h um longo tempo. A seguir, apresenta-se
uma breve cronologia do desenvolvimento dos principais algoritmos rpidos conhecidos na
literatura:

Em 1958, Goertzel apresentou um algoritmo para computar componentes isoladas da DFT


[30];

Os primeiros algoritmos rpidos para computar a DFT foram propostos por I. J. Good (1958,
1960) e por L. H. Thomas (1963) [31, 32]. Esses algoritmos se baseiam no teorema chins
do resto e, posteriormente, foram unicados sob o ttulo de algoritmo de Good-Thomas ou
algoritmo do fator primo (PFA, do ingls Prime Factor Algorithm) [33].

Em 1965, J.W. Cooley e J.W. Tukey introduziram uma ideia revolucionria que posteriormente tornou-se conhecida como a Transformada Rpida de Fourier (FFT, do ingls
Fast Fourier Transform) [34]. Entretanto, pode-se atribuir a Gauss algumas das idias
propostas nesse trabalho [35, 36]. A FFT um marco na teoria de algoritmos [37] e, mais
especicamente, no campo de Processamento de Sinais [38, 39];

Em 1968, Rader [40] e, em 1970, Bluestein [41], forneceram mtodos para computar a DFT
por meio de uma convoluo; o primeiro cou conhecido na literatura como algoritmo Rader
primo;

Em 1969, Bergland apresentou um algoritmo com base 8 [42, 43] e Singleton apresentou
uma FFT com base mista [44];

Em 1971, Pollard desenvolveu uma transformada anloga DFT, porm denida em um


corpo nito [45];

Em 1976 [46], Rader e Brenner propuseram uma forma alternativa da FFT. Neste mesmo
ano, Winograd [47] props um algoritmo que combina o algoritmo de Rader primo com um
outro algoritmo, de sua autoria, para computar uma convoluo;

Em 1978, Winograd generalizou o mtodo de Rader para comprimentos que sejam uma
potncia de um primo [48].

15

Em 1984, Duhamel e Hollman apresentaram um algoritmo em que se usavam diferentes


bases, o split-radix [49]; outras variaes deste algoritmo so encontradas em [5052];

Em 1988 [53], Heideman estudou a complexidade multiplicativa da DFT, chegando a uma


frmula para o nmero de multiplicaes em ponto utuante necessrias para comput-la.
Nesse mesmo ano, Tufts e Sadasiv desenvolveram um algoritmo rpido com base em funes
aritmticas para o clculo da DFT, a chamada Transformada Aritmtica de Fourier (AFT,
do ingls Arithmetic Fourier Transform), sem utilizar multiplicaes em ponto utuante
[54, 55]. Detalhes sobre o desenvolvimento da AFT podem ser encontrados em [56, 57].
Este algoritmo fornece uma aproximao do valor da DFT;

Em 1995, Varkonyi-Koczy apresentou um algoritmo que usava a recursividade para computar a DFT [58];

Em 2009 [59], Marti-Puig apresentou duas famlias de algoritmos FFT base-2 que tem a
propriedade que ambas, entrada e sada, sejam endereadas em ordem natural;

Em 2011, Silva Jr. e Campello de Souza propuseram novos algoritmos, explorando os conceitos de base ciclotmica, para a computao de um nmero arbitrrio de componentes da
DFT. Esses algoritmos so timos, no sentido de apresentarem complexidade multiplicativa
mnima [6062];

Outros algoritmos rpidos so apresentados e podem ser consultados em [6365].


Um tutorial que revisa os algoritmos FFT est disponvel em [66]. Um dos objetivos
na pesquisa destes algoritmos reduzir sua complexidade aritmtica, isto , o nmero de
multiplicaes e adies reais para calcular a DFT.
Em 1942 [67], R. V. L. Hartley (1890-1970) introduziu uma transformada real que uma
formulao alternativa para a transformada de Fourier. Esta atraente pois usa aritmtica
real. Pode-se citar algumas aplicaes da transformada de Hartley:

Processamento de imagem. [6871];


Processamento de imagens ssmicas. [72];
Cifragem de imagem pticas. [73];
Compresso de imagem. [74];
ptica e microondas. [75, 76];
Processamento de voz. [77, 78];

16

Filtragem adaptativa. [79];


Comunicaes. [80, 81].
A seguir, apresenta-se uma breve cronologia do desenvolvimento da transformada de Hartley:

Em 1942, Hartley introduziu a transformada contnua de Hartley [27, 67, 82];


Em 1983, Bracewell desenvolveu a transformada discreta de Hartley - DHT (do ingls,
Discrete Hartley Transform) [83];

Em 1984, Bracewell implementou um algoritmo rpido para computao da DHT [84];


Em 1985, Sorensen, Jones, Burrus e Heideman propuseram um conjunto de FHTs [85];
Em 1990, Yang props uma FHT de fator primo [86];
Em 1993, Lun props uma FHT de base-3/9 [87];
Em 1994, Guoan props um algoritmo "split radix" para computao da DHT [88];
Em 1998, Campello de Souza, de Oliveira e Kauman introduziram a transformada de
Hartley sobre um corpo nito [89];

Em 1999, Guoan Bi e Chen propuseram uma FHT para comprimentos N = q 2m [90];


Em 2000, H. de Oliveira, Cintra e Campello de Souza desenvolveram uma FHT com uma
decomposio multinvel para a DHT [91];

Em 2001, Cintra, H. de Oliveira e Cintra desenvolveram a transformada de Hartley truncada


[92];

Em 2005, Bouguezel e Ahmad propuseram uma FHT de base-2/4 [93];


Em 2009, Shah desenvolveu uma DHT de base-2 [94];
Em 2011, Hamood e Boussakta desenvolveram uma FHT baseada em base-22

[95].

Com o advento da VLSI (do ingls, Very Large Scale Integration) e o desenvolvimento dos
Processadores Digitais de Sinais (DSP, do ingls Digital Signal Processor ), que implementam
tcnicas de processamento de sinais, a DFT e a DHT tornaram-se ferramentas atrativas para
avaliao do espectro de um sinal [96, 97]. A reduo de custo dos DSPs e a capacidade
crescente alcanada por processadores de dados (ou seja, dezenas de GFlps - Giga operaes
em ponto utuante por segundo - e TFlops, Tera operaes em ponto utuante por segundo)
[98], junto com novas e ecientes tcnicas de processamento de sinais, esto tornando viveis

17

aplicaes em tempo real para diversos tipos de sinais. Neste cenrio, a DFT e DHT tornaramse ferramentas largamente difundidas para anlise espectral [99].

1.1

Contribuies

O objetivo desta tese apresentar novos algoritmos rpidos para computao de transformadas discretas. As contribuies dadas so:

Um novo algoritmo rpido para computao da DFT, baseado em srie matricial de Laurent,
para comprimentos N 4 mod 8.

Um novo algoritmo rpido para computao da DHT, baseado em expanso matricial, para
comprimentos N 0 (mod 4).

Algoritmos timos, ou seja, com complexidade multiplicativa mnima, para computao da


DHT para os comprimentos 8, 12, 16 e 24.

Projeto e implementao, no dispositivo SPARTAN 3E xc3s500e-5-fg320, de um algoritmo


que capaz de fazer a computao rpida dos coecientes da DFT/DHT de uma sequncia
real de comprimento N = 16.

Procedimento para reduo de operaes aditivas em uma matriz.


Os novos algoritmos rpidos apresentam uma complexidade aritmtica multiplicativa mais
baixa que a dos algoritmos conhecidos na literatura, sendo que suas estruturas so interessantes para implementaes em VLSI e FPGA.

1.2

Organizao da Tese

A tese est organizada em seis captulos. Aps esta introduo, o captulo 2 apresenta
a transformada discreta de Fourier (DFT), em que visa-se fazer a ligao da representao
de sinais de tempo contnuo com a de sinais de tempo discreto; alm disso, apresentada a
denio da transformada discreta de Hartley. No captulo 3 so apresentados os principais algoritmos rpidos para clculo da DFT, que so os algoritmos de Cooley-Tukey, Good-Thomas
e Rader-Primo. O captulo 4 introduz a tcnica proposta para computao da DFT baseada
em srie matricial de Laurent, apresentando exemplos da aplicao dessa nova tcnica. O captulo 5 apresenta um novo algoritmo para computao da DHT atravs de expanso matricial.

18

O captulo 6 apresenta uma implementao em FPGA das duas transformadas (Fourier e Hartley). O captulo 7 apresenta as concluses e sugestes para trabalhos futuros. O Apndice
A apresenta um procedimento para a fatorao de uma matriz em matrizes bielementares. A
lista dos trabalhos publicados, decorrentes da pesquisa relatada nesta tese, apresentada no
Apndice B. Anexo tese, o leitor encontrar um CD contendo os cdigos-fonte utilizados
para descrio, em VHDL, do gerenciamento da computao da DFT/DHT.

captulo

A Transformada Discreta
de Fourier - DFT

A anlise espectral de sinais em tempo contnuo tem como uma de suas principais ferramentas a transformada de Fourier [100]. No entanto, muitas aplicaes envolvendo esta
transformada dependem de um computador digital para efetuar o processamento dos dados, sendo que seu clculo ca invivel para sinais em tempo contnuo. Como mostrado mais
adiante neste captulo, a transformada discreta de Fourier pode ser derivada a partir da Transformada de Fourier em Tempo Discreto (TFTD). Este captulo tem como objetivo introduzir
a DFT que ser utilizada para anlise espectral de sinais.

2.1

Introduo

H quatro representaes de Fourier distintas, cada uma aplicvel a uma classe de sinais.
A Tabela 2.1 mostra a relao entre o domnio do tempo e as representaes de Fourier. Nesta
pode-se ver as quatro classes de sinais denidas pelos aspectos periodicidade (peridico/no
peridico) e tipo (contnuo/discreto). Os sinais peridicos tm representaes pelas sries de
Fourier: srie de Fourier (FS), discreta e no peridica; e srie discreta de Fourier (DFS),
discreta e peridica. A primeira se aplica a sinais peridicos de tempo contnuo, e a segunda
se aplica a sinais peridicos de tempo discreto. Sinais no-peridicos tm representaes pelas
transformadas de Fourier: transformada de Fourier contnua (FT), contnua e no peridica;
e transformada de Fourier de tempo discreto (DTFT), contnua e peridica. A primeira se
aplica a sinais de tempo contnuo e no-peridicos, e a segunda se aplica a sinais de tempo

20

discreto e no-peridicos [101].


Tabela 2.1: Relao entre caractersticas de tempo de um sinal e sua representao de Fourier
Domnio

Peridico

No peridico

Srie de Fourier (FS)

Transformada de Fourier contnua (FT)

(Discreta e No peridica)

(Contnua e No Peridica)

Srie Discreta de Fourier

Transformada de Fourier de Tempo Discreto

(DFS)/DFT

(DTFT)

(Discreta e Peridica)

(Contnua e Peridica)

no Tempo
Contnuo

Discreto

2.2

Representao de sequncias peridicas: A srie discreta


de Fourier (DFS)

Considere uma sequncia discreta peridica ve[n], com perodo N , ou seja

ve[n] = ve[n + rN ],

(2.1)

para qualquer valor inteiro de r e N . Como ocorre com os sinais peridicos em tempo contnuo, tal sequncia pode ser representada por uma srie de Fourier, correspondendo a uma
combinao linear de exponenciais complexas harmonicamente relacionadas, cujas frequncias
so mltiplos inteiros da frequncia fundamental (2/N ) (ou harmnicas) associada com o
perodo da sequncia ve[n].
A srie de Fourier de sinais peridicos de tempo contnuo requer innitas exponenciais
complexas harmonicamente relacionadas. Entretanto, a srie de Fourier para qualquer sinal
em tempo discreto com perodo N requer somente N exponenciais complexas harmonicamente
relacionadas, como mostrado na Equao 2.2 [101],

ve[n] =

N 1
1 e
V [k]ej(2/N )kn ,
N
k=0

j(2/N )(k+lN )n

pois e

j(2/N )kn j2ln

=e

= ej(2/N )kn .

(2.2)

21

Os coecientes da srie de Fourier so obtidos da srie peridica conforme Equao 2.3


[101],

Ve [k] =

N
1

ve[n]ej(2/N )kn ,

(2.3)

n=0

com isso, a sequncia resultante peridica de perodo N .


Pode-se representar o par DFS e as equaes de anlise e sntese da srie discreta de
Fourier pelas Equaes 2.4, 2.5 e 2.6, respectivamente,

Par DFS
ve[n] Ve [k].
DF S

Equao de Anlise
Ve [k] ,

N
1

(2.4)

kn
ve[n]N
.

(2.5)

n=0

Equao de Sntese

N 1
1 e
kn
ve[n] =
V [k]N
.
N

(2.6)

k=0

em que N , ej(2/N ) . A deduo destas Equaes pode ser encontrada em [101].


A Figura 2.1 mostra o grco de uma sequncia peridica e sua respectiva DFS.
Sequncia Peridica: N = 10

DFS da Sequncia Peridica: N = 10

|V~[k]|

0
15

10

0
n

10

15

20

20

15

10

Figura 2.1: Uma sequncia peridica e sua DFS.

0
k

10

15

20

22

2.3

A transformada de Fourier de sinais peridicos

Uma sequncia que representada como uma soma de exponenciais complexas tem uma
representao por meio da transformada de Fourier como um trem de impulsos [101]. Com
isso, til incorporar a representao da srie discreta de Fourier de sinais peridicos dentro
da denio da transformada de Fourier.
Seja ve[n] uma sequncia peridica com perodo N e sejam Ve [k] os correspondentes coecientes da srie discreta de Fourier. Dene-se a transformada de Fourier de sinais peridicos
conforme a Equao 2.7.

Ve (ej ) ,

(
)

2 e
2k
V [k]
.
N
N

(2.7)

k=

em que (.) um impulso de Dirac [101].


Note que Ve (ej ) tem necessariamente periodicidade igual a 2 , haja vista que Ve [k]
peridica com perodo N e os impulsos so espaados em mltiplos inteiros de 2/N , sendo

N um nmero inteiro. Na Figura 2.1, ilustra-se um sinal peridico com perodo N = 10.
Agora, vamos considerar um sinal de comprimento nito v[n], ou seja, v[n] = 0, exceto no
intervalo 0 n N 1. Atravs da convoluo desta sequncia com um trem de impulsos,
podemos reescrever a sequncia peridica ve[n] conforme a Equao 2.8,

ve[n] = v[n]

(n rN ) =

r=

v[n rN ].

(2.8)

r=

Diante disso, podemos denir a Transformada de Fourier de Tempo Discreto para um


sequncia de comprimento nito conforme Equao 2.9,

V (ej ) =

N
1

v[n]ejn =

n=0

N
1

ve[n]ejn .

(2.9)

n=0

Comparando as Equaes 2.9 e 2.5, podemos relacionar a transformada de Fourier com a


srie discreta de Fourier conforme a Equao 2.10,



Ve [k] = V (ej ) = 2k .
N

(2.10)

Isto corresponde amostragem da transformada de Fourier de tempo discreto em N


frequncias igualmente espaadas entre = 0 e = 2 , com um espaamento de frequncia
de 2/N . Isto chamado de resoluo de frequncia, porque nos diz o quo prximo esto as
amostras de frequncia. A Figura 2.2 ilustra a amostragem de frequncia para N = 8.

23
Plano Z
Im
2
1
3

Cculo
Unitrio

2pi/8
Re
0

7
5
6

Figura 2.2: Pontos no crculo unitrio ilustrando a amostragem de frequncia de um sinal peridico,
cujo comprimento 8.

2.4

A transformada discreta de Fourier: DFT

Para cada sequncia v[n] de durao nita, podemos sempre associ-la a uma sequncia
peridica, de perodo N ,

ve[n] =

v[n rN ].

(2.11)

r=

A sequncia de durao nita pode ser recuperada por meio de

v[n] =

ve[n], 0 n N 1,

0,

(2.12)

caso contrrio.

Os coecientes da DFS de ve[n] so amostras da transformada de Fourier de v[n]. A


sequncia dos coecientes da srie de Fourier Ve [k] da sequncia peridica ve[n] uma sequncia
peridica com perodo N . A Figura 2.3 mostra essa relao para uma sequncia nita obtida
de uma onda quadrada (N = 10) .
Para manter a dualidade entre os domnios de tempo e frequncia, escolheremos os coecientes da srie, que associamos com uma sequncia de durao nita, pois esta de durao
nita correspondendo ao perodo de Ve [k] [101].

24

Resposta em Amplitude
5
DTFT
DFS

4.5
4
3.5

| H(w) |

3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1
1.2
Frequncia

1.4

1.6

1.8

Figura 2.3: Grco ilustrando a Relao entre a DTFT e a DFS.

Esta sequncia, V [k], ser chamada de transformada discreta de Fourier (DFT). Com isso,
a DFT est relacionada com os coecientes da DFS por

V [k] =

Ve [k], 0 k N 1,

0,

caso contrrio.

Como

Ve [k] =

N
1

kn
ve[n]N

n=0

e
N 1
1 e
kn
,
V [k]N
ve[n] =
N
k=0

portanto,

(2.13)

25

V [k] =

N 1 v[n] kn , 0 k N 1,
N
n=0

0,

(2.14)

caso contrrio.

v[n] =

1 N 1 V [k] kn , 0 k N 1,
N
k=0
N

0,

(2.15)

caso contrrio.

As equaes de Anlise e Sntese da DFT so representadas pelas Equaes 2.16 e 2.17,


respectivamente.

Equao de Anlise
V [k] =

N
1

kn
v[n]N
.

(2.16)

n=0

Equao de Sntese
v[n] =

N 1
1
kn
V [k]N
.
N

(2.17)

k=0

A relao entre as equaes 2.16 e 2.17 ser denotada por


DF T

v[n] V [k]

(2.18)

Sobre estas expresses, pode-se tirar duas importantes concluses:


1. As amostras da transformada de Fourier de tempo discreto fornecem uma efetiva representao discreta no domnio da frequncia para um sinal de comprimento nito de
tempo discreto.
2. Para que no haja "perda de informao" nessa representao, necessrio que o nmero

N de amostras da transformada de Fourier de tempo discreto seja maior ou igual ao


comprimento do sinal original.
A representao matricial da DFT mostrada na equao 2.19,

V0
V1
V2
..
.
VN 1

...

...

N 1

1
..
.

2
..
.

4
..
.

...
..
.

2(N 1)
..
.

N 1

2(N 1)

...

(N 1)(N 1)

v0
v1
v2
..
.
vN 1

(2.19)

26

Em 1987, Heideman investigou a complexidade aritmtica da DFT e derivou os limites


inferiores da complexidade multiplicativa para comput-la [53]. Seja DF T (N ) a mnima
complexidade multiplicativa da computao da DFT de um bloco de comprimento N .
Teorema 2.1 (Heideman). Para N =

m
i=1

pei i em que pi , i = 1, . . . , m so primos distintos

e ei , i = 1, . . . , m so inteiros positivos, segue que

DF T (N ) = 2N

e1
e2

...

i1 =0 i2 =0

gcd

pjj
i

(2.20)

j=1

em que (.) a funo de Euler (x) = |{n N |n < x M DC(n, x) = 1}|.


Demonstrao:

Para uma demonstrao deste teorema, o leitor pode consultar [53]. Esta

prova baseada na avaliao da complexidade multiplicativa do produto de um conjunto de


polinmios.

2.5

A transformada discreta de Hartley: DHT

Considerada, por muitos anos, essencialmente como uma tcnica para computao da
transformada de Fourier, a transformada de Hartley (contnua ou discreta) tornou-se uma
ferramenta prtica, com muitas aplicaes em vrios campos da Engenharia [102]. Em particular, o par da transformada discreta de Hartley (DHT, do ingls Discrete Hartley Transform)
denido, para uma sequncia de comprimento N, h[n], 0 n N 1, pelas Equaes 2.21
e 2.22 [83],

H[k] ,

N
1

h[n]cas(

n=0

2
kn)
N

N 1
1
2
h[n] =
H[k]cas( kn)
N
N

0 k N 1,

0 n N 1,

(2.21)

(2.22)

k=0

em que cas(.) denota a funo cosine and sine denida como cas(i) , cos(i) + sin(i). A
DHT, como sua contraparte contnua, real, e a simetria do par da transformada uma
caracterstica valiosa para sua implementao.

2.6

Consideraes Finais

Neste captulo apresentamos um procedimento para se chegar DFT, fazendo a associao


com a srie discreta de Fourier e a transformada de Fourier em tempo discreto. Finalizamos

27

com a representao em forma matricial da mesma. Esta formulao servir como base para
o desenvolvimento dos prximos captulos.

captulo

A Transformada Rpida
de Fourier

A DFT, como denida na Equao 2.16, requer N 2 multiplicaes e N (N 1) adies, o


que frequentemente limita a sua aplicao mesmo para sequncias de comprimento N 1024.
Porm, se N um nmero composto, h diversas maneiras de modicar esta transformada
unidimensional em uma bidimensional [29], o que proporciona uma reduo na complexidade
aritmtica de sua computao. Em 1965, Cooley e Tukey propuseram um algoritmo rpido
para computar a DFT [34]. Este algoritmo tem complexidade multiplicativa (N/2) log2 N ,
muito menor em comparao a N 2 da computao pela denio da DFT[103]. Quando N
um nmero primo, existe uma FFT que computa a DFT por meio de uma convoluo cclica
[29], usando o algoritmo rpido de Winograd para ltragem digital. Desta forma, a computao da DFT tornou-se muito mais rpida, tornando-a vivel para diversas aplicaes que
vo desde a anlise de sinais at a realizao de uma ltragem linear rpida. Existem diversos
algoritmos rpidos para clculo da DFT [47, 66, 96, 104, 105]. Neste captulo, abordaremos
os algoritmos de Cooley-Tukey, Good-Thomas e Rader-Primo.

3.1

O Algoritmo de Cooley-Tukey

Seja N = N1 N2 . Vamos substituir cada um dos ndices n e k , na expresso para a


transformada discreta de Fourier, por ndices n1 , n2 , k1 e k2 , tais que

29

n = n1 + N 1 n2 ,

n1 = 0, . . . , N1 1 e n2 = 0, . . . , N2 1;

k = N2 k1 + k2 ,

k1 = 0, . . . , N1 1 e k2 = 0, . . . , N2 1.

Ento,

XN2 k1 +k2 =

N
2 1 N
1 1

(n +N1 n2 )(N2 k1 +k2 )

N 1

xn1 +N1 n2 .

(3.1)

n2 =0 n1 =0

Expandindo o produto, temos

XN2 k1 +k2 =

N
2 1 N
1 1

(n N2 k1 +n1 k2 +N1 n2 N2 k1 +N1 n2 k2 )

N 1

xn1 +N1 n2

n2 =0 n1 =0

N
2 1 N
1 1

N n2 k2 )

n1 N2 k1 n1 k2 N1 n2 N2 k1
N 1
N
N N

xn1 +N1 n2 .

(3.2)

n2 =0 n1 =0

em que

, ej N .
2

N
Denindo

2N1

2N2

N1
, ej
N

2N1
N

= ej N1 N2 = ej N2 = N2 ,

N2
N
, ej

2N2
N

= ej N1 N2 = ej N1 = N1 ,

tem-se

XN2 k1 +k2 =

N
1 1

[
n1 k1
n1 k2
N
N
1

n1 =0

N
2 1

]
n2 k2
N
xn1 +N1 n2 .
2

(3.3)

n2 =0

Denindo variveis de duas dimenses,

xn1 n2 , xn1 +N1 n2 ,

n1 = 0, . . . , N1 1 e n2 = 0, . . . , N2 1,

Xk1 k2 , XN2 k1 +k2 ,

k1 = 0, . . . , N1 1 e k2 = 0, . . . , N2 1,

tem-se

X k1 k2 =

N
1 1
n1 =0

[
n1 k1
N
1

n1 k2
N

N
2 1
n2 =0

]
n2 k2
N
xn1 n2
2

(3.4)

30

Figura 3.1: Esquema ilustrativo para a FFT Cooley-Tukey: observar a indexao de 1-D para 2-D.
Apenas os ndices das componentes dos vetores de entrada e de sada so indicados.

Para computao da DF T de comprimento N , pode-se ento seguir o seguinte procedimento:


1. Faz-se o mapeamento de entrada da sequncia de entrada para uma matriz bidimensional;
2. Aplica-se em cada coluna da matriz uma DF T de comprimento N2 ;
n1 k2
;
3. Multiplica-se a matriz, resultante do passo anterior, pelos fatores de ajuste N

4. Aplica-se, em cada linha da matriz obtida no passo 3, uma DF T de comprimento N1 ;


5. Faz-se o mapeamento de sada para gerar a transformada da sequncia.
A Figura 3.1 ilustra este procedimento. Embora essa forma seja mais difcil de entender
que a original, o nmero de multiplicaes e adies menor. Na realidade, N (N1 + N2 + 1)
multiplicaes complexas e N (N1 + N2 2) adies complexas so necessrias para computar
a DFT de comprimento N usando este algoritmo [29].

3.1.1 O algoritmo de Cooley-Tukey base 2: dizimao no tempo


Suponha que N seja uma potncia de 2. Pode-se separar a sequncia de entrada, xn , em
componentes pares e mpares, obtendo-se

Xk =

n par

kn
xn N
+

kn
xn N
.

(3.5)

n impar

Substituindo a varivel n por n = 2r, quando n par, e n = 2r + 1, quando n mpar,


tem-se

31

(N/2)1

Xk =

(N/2)1
2rk
x2r N
+

r=0

r=0

(N/2)1

(2r+1)k

x2r+1 N

(N/2)1
2 rk
k
x2r (N
) + N

r=0

2 rk
x2r+1 (N
) .

(3.6)

r=0

2
Como N
= e2j(2/N ) = ej(2/(N/2)) = N/2 , a Equao 3.6 pode ser escrita na forma

Xk =

(N/2)1

(N/2)1
rk
x(2r) N/2

k
N

r=0

rk
x(2r+1) N/2
.

(3.7)

r=0

Observa-se que cada somatrio representa uma DFT de comprimento N/2. Denindo

(N/2)1

Gk ,

rk
x2r N/2

r=0

(N/2)1

Hk ,

rk
x(2r+1) N/2
,

r=0

a Equao 3.7 pode ser reescrita da seguinte forma

k
Xk = Gk + N
Hk ,

k = 0, 1, . . . , N 1.

(3.8)

Este algoritmo conhecido como algoritmo em dizimao no tempo, pois, recursivamente,


divide a sequncia xn em subsequncias. Embora o ndice k percorra todos valores de N ,

k = 0, 1, . . . , N 1, cada um dos somatrios deve ser computado apenas quando k estiver na


faixa de 0 a N/21, pois Gk e Hk so peridicos em k com perodo N/2. Aps as duas DFTs
terem sido computadas, elas sero combinadas conforme a Equao 3.8. Este procedimento
recursivamente aplicado at que cada uma das DFTs resultante seja de comprimento N = 2.
A Figura 3.2 ilustra o procedimento para N = 16; em cada nvel aplicada a Equao
3.8. Como N = 2v , isto feito no mximo v = log2 N vezes, tal que, aps conseguir
esta decomposio tantas vezes quanto possvel, o nmero de multiplicaes igual a
N
2

N
2v

log2 N e o nmero de adies igual a N v = N log2 N .


Observando a Figura 3.2, nota-se que, do atual para o prximo estgio, a computao

bsica tem a forma mostrada na gura 3.3, ou seja, envolve a obteno de um par de valores
em um estgio, a partir de um par de valores do anterior, em que os coecientes so sempre
potncias de N e os expoentes so separados por N/2. Por causa da forma do grafo, esta
computao elementar chamada de borboleta (do ingls buttery).

32

Figura 3.2: Decomposio da sequncia de entrada at N=2 na FFT de Cooley-Tukey base 2.

Figura 3.3: Clula bsica (borboleta) para computao da FFT de Cooley-Tukey base 2.

Desde que,
N/2

N
r+N/2

o fator N

= ej(2/N )N/2 = ej = 1,

escrito como
r+N/2

N/2

r
r
= N N
= N
.

Com isso, a computao da borboleta da Figura 3.3 simplicada como na Figura 3.4,
que requer apenas uma multiplicao complexa em vez de duas.

Figura 3.4: Clula bsica simplicada para a computao da FFT de Cooley-Tukey base 2.

33

3.2

O algoritmo de Good-Thomas

Este algoritmo tambm conhecido como Algoritmo do Fator Primo (PFA, do ingls
Prime Factor Algorithm) e baseado na fatorao do comprimento N = N1 N2 em potncias
de primos distintos. O algoritmo ilustrado na Figura 3.5, para o caso N = 15. N1 e N2
devem ser relativamente primos e o mapeamento que arranja os N componentes da sequncia
a ser transformada em uma matriz N2 N1 , baseado no Teorema Chins do Resto[106]. Os
elementos do vetor de entrada so armazenados em uma matriz bidimensional, iniciando pelo
canto superior esquerdo e listando os componentes como uma "diagonal estendida". Como o
nmero de colunas e linhas so coprimos, a diagonal estendida passa por todos os elementos
do vetor [106]. Aps esta etapa, computada a DFT da matriz. A ordem dos componentes
na matriz de sada diferente da ordem dos componentes na matriz de entrada.

Figura 3.5: Exemplo da FFT de Good-Thomas para N = 15.

A derivao do algoritmo de Good-Thomas baseada no teorema chins do resto [29]. O


indce de entrada descrito pelos seus resduos como segue:

n1 = n

(mod N1 ),

n2 = n

(mod N2 ).

Este o mapa dos indces de entrada, n, "descendo"a diagonal estendida de uma matriz
bidimensional (n1 , n2 ). Pelo teorema chins do resto, existem dois nmeros inteiros N e N
tais que os ndices de entrada so recuperados da seguinte forma:

n = n1 N N2 + n2 N N1

(mod N ),

34

em que N e N so nmeros inteiros que satisfazem

N N1 + N N2 = 1.
Os indces de sada so descritos por

k1 = N k

(mod N1 ),

k2 = N k

(mod N2 ).

Para este propsito, N e N so reduzidos mdulo N1 e mdulo N2 respectivamente. O


ndice de sada k recuperado como segue

k = N2 k1 + N1 k2

(mod N ).

Agora, com estes novos ndices, convertemos a transformada discreta de Fourier


N
1

Vk =

nk xn

n=0

na expresso

Vn2 k1 +n1 k2 =

N
2 1 N
1 1

(n1 N

N2 +n2 N N1 )(N2 k1 +N1 k2 )

vn1 N N2 +n2 N N1

(3.9)

n2 =0 n1 =0

Mudando N2 k1 + N1 k1 por (k1 , k2 ) e n1 N N2 + n2 N N1 por (n1 , n2 ), vem

Vk1 ,k2 =

N
1 1 N
2 1

(N2 )2 n1 k1

(N1 )2 n2 k2

vn1 n2

n1 =0 n2 =0

N
1 1 N
2 1

n1 k1 n2 k2 vn1 ,n2 ,

(3.10)

n1 =0 n2 =0

em que = N

(N2 )

e = N

(N1 )2

. Os termos e so as N1 -sima e N2 -sima razes

da unidade, respectivamente, ou seja, so os ncleos da DFT de N1 -pontos e N2 -pontos,


respectivamente. Note que = (2N )N

N2

. Haja vista que N2 = ej2/N1 e N N2 = 1

(mod N1 ), logo = ej2/N1 . De maneira similar, temos que = ej2/N2 .


A Equao 3.10 est agora no formato de uma DFT bidimensional N1 N2 . O nmero
de multiplicaes N (N1 + N2 ). Se o comprimento das linhas/colunas for composto, as
DFTs podem ser computadas por outra transformada rpida de Fourier. Desta maneira,
uma transformada cujo comprimento N tem Nl fatores coprimos computada numa forma

que requer aproximadamente N l Nl multiplicaes e adies [29].

35

3.3

O algoritmo Rader-Primo

Este algoritmo, que usa a convoluo para clculo da DFT denida pela Equao 2.16,
requer apenas algumas operaes de indexao e uma convoluo cclica de comprimento

(N 1). usado para computar a DFT em qualquer corpo F sempre que o comprimento da
sequncia um primo p. Neste caso, podemos fazer uso da estrutura de GF (p), o campo de
Galois de p elementos [107], para reindexar os componentes do vetor de entrada.
Se denota um elemento primitivo de GF (p), ento cada elemento desse corpo pode ser
expresso com uma potncia de [40].
No que se segue, a expresso da DFT (2.16) ser reescrita com n e k sendo potncias do
elemento primitivo . Como n e k podem assumir o valor zero e zero no uma potncia
de , ento as componentes de frequncia (k = 0) e tempo (n = 0) devem ser tratadas separadamente. Com isso, o clculo das componentes da transformada ser dado pelas Equaes
(3.11) e (3.12), para as componentes com ndice zero e as demais, respectivamente. Assim,
p1

V0 =

nk vn ,

(3.11)

n=0

Vk = v 0 +

p1

nk vn

k = 1, . . . , p 1.

(3.12)

n=1

Com n variando de 1 at (p 1), seja r(n) o inteiro tal que, em GF (p), r(n) = n e

r(k) = k . A Equao (3.13) mostra uma nova forma de escrever a transformada,

Vr(k) = V0 +

p1

r(n)+r(k)

1)vr(n) ,

(3.13)

n=1

em que a funo r(n) um mapeamento bijetivo de {1, 2, . . . , p 1} em {1, 2, . . . , p 1}, ou


seja, uma permutao.
Denindo r(k) = l e r(n) = p 1 j , e usando j como ndice do somatrio, temos a
Equao 3.14,

36

V l

= V0 +

p2

l+p1j

lj

lj

)vp1j

j=0

= V0 +

p2

p1

)vp1j

j=0

= V0 +

p2

)vp1j

l = 0, . . . , p 2

(3.14)

j=0

pois p1 = 1. Finalmente, a Equao (3.15) mostra uma modicao feita na Equao 3.14,

V l V0 =

p2

lj

l = 0, . . . , p 2,

)vj

(3.15)

j=0

em que Vl = Vl e vj = vp1j so sequncias permutadas da sada e entrada, respectiva

mente. Esta equao uma convoluo cclica entre o vetor de entrada permutado v = [vj ] e
j

o vetor [ 1], ou seja, vl . Dene-se o polinmio de Rader como sendo

g(x) =

p2

( 1)v j .

(3.16)

j=0

Pela permutao dos ndices de entrada e sada, mudamos a transformada discreta de


Fourier de comprimento (p) em uma convoluo cclica de comprimento (p 1), a qual pode
ser computada por meio do algoritmo de Winograd [29].

3.4

Consideraes Finais

Neste captulo foram apresentadas algumas transformadas rpidas de Fourier, que so algoritmos rpidos para computar a DFT. O ganho computacional foi demonstrado com relao
denio da DFT. Encerra-se aqui a apresentao do estado da arte, em que os algoritmos
de Cooley-Tukey, Good-Thomas e Radder-Primo foram detalhados. O prximo captulo inicia
as contribuies pessoais.

captulo

Transformada Rpida de
Fourier baseada em Srie
Matricial de Laurent

Neste captulo uma nova transformada rpida de Fourier para sequncias de comprimento

N = 8m + 4, baseada em sries matriciais de Laurent, apresentada. Resultados de complexidade aritmtica expressos em multiplicaes reais no-triviais so apresentados para comprimentos de bloco inferiores a 65, mostrando que o algoritmo tem um desempenho prximo s
FFTs prvias. Uma descrio detalhada do algoritmo feita para os casos em que m = 1 e

m = 2. Este novo algoritmo rpido ser implementado para comprimentos particulares de N ,


do tipo N 4(mod 8), e N 0(mod 4).

4.1

DFT como uma srie matricial de Laurent

O primeiro passo em direo a FFT proposta nesta tese reescrever a Equao (2.16) na
forma matricial

V0
V1
V2
..
.
VN 1

...

W2

...

W N 1

1
..
.

W2
..
.

W4
..
.

...
..
.

W 2(N 1)
..
.

W N 1

W 2(N 1)

...

W (N 1)(N 1)

v0
v1
v2
..
.

(4.1)

vN 1

ou (Vk ) = [DF T ](vn ). Haja vista que W , ej N tem ordem N , existem somente N potncias
2

distintas de W no conjunto {W 0 , W 1 , W 2 , W 3 , . . . , W (N 1) }.

38

A FFT descrita neste captulo lida com blocos de comprimento N 4(mod 8) para
garantir que exista sempre uma potncia de W que produzir os autovalores da DFT, ou seja,

1, j [24]. Estes termos no contribuem para a complexidade multiplicativa, pois


W 0 = 1, W N/4 = j, W N/2 = 1 e W 3N/4 = j.

(4.2)

Os expoentes de W na Equao 4.2 geram um conjunto de quatro pontos que esto no eixo
real ou imaginrio. Este fato est associado ao conjunto

C0 = {0, N/4, N/2, 3N/4}


e estamos procurando simetrias particulares nos quatro quadrantes do plano de Argand-Gauss
[108].
O conjunto dos expoentes das potncias distintas de W , {W 0 , W 1 , W 2 , W 3 , . . . , W (N 1) },
ento particionado em N classes (vale a pena observar que 4|N ):

Cm , {x N [0, N )|4x 4m(mod N )},


em que N o conjunto dos nmeros naturais e m = 0, 1, 2, . . . , (N 1).
Proposio 4.1 As classes {Cm } produzem uma partio do conjunto dos inteiros {0, 1,
N 1
2, . . . , (N 1)}, ou seja, m = m , Cm Cm = e m=0 Cm = {0, 1, 2, . . . , (N 1)}.
Demonstrao:

Suponha (por reduo ao absurdo) que exista um inteiro m = m tal que

Cm Cm = . Ento, existe um elemento comum x Cm e x Cm tal que 4x 4m(mod N )


e 4x 4m (mod N ). Com isso 4m 4m (mod N ), que o mesmo que m m (mod N/4),
uma contradio. A cardinalidade do conjunto Cm para cada m ||Cm || = 4. Existem N/4


N/41

classes disjuntas, tais que m=(N/41) Cm = 4(N/4) = 4 e as classes Cm formam uma
partio de {0, 1, 2, . . . , N 1}.
Por simplicidade, lidamos apenas com matrizes de expoentes de W na matriz da DFT.
Vamos denir uma matriz (N x N ), M := (kn(mod N )), cujos elementos pertencem ao
conjunto {0, 1, 2, . . . , N 1}. Tambm denimos um operador l sobre uma matriz (N N ),
para cada l = 0, 1, 2, . . . , N 1, que produzir um nova matriz binria (N N ) cujos elementos
(
)
so l,mk,n , em que o smbolo de Kronecker.
Finalmente, denimos uma matriz Mm associada com cada classe Cm , para m = 0, 1,
( )
2, . . . , N4 /2, dada por

39

Mm ,

(j)

4(lm)
N

l (M ).

(4.3)

lCm

Por exemplo, m = 0 corresponde parte aditiva da matriz de transformao da DFT:

M0 = 1.0 (M ) j.N/4 (M ) 1.N/2 (M ) + j.3N/4 (M ).


Considere uma (possivelmente innita) matriz A expressa em termos de blocos de matrizes
na forma

A = (. . . , A1 , A0 , A1 , . . .),
em que Al so as submatrizes (N N ) de A. A partir dessa matriz, a seguinte expresso
formaliza a srie de potncias chamada de srie de Laurent da matriz A [109, 110],

A(z) :=

Al z l .

(4.4)

l=

Ento, A(z) uma srie de Laurent com coecientes matriciais. Em casos particulares em
N2
Al .z l , N1 , N2 Z , ento
que A(z) := l=N
1

g := N2 N1 + 1
o genus de A(z) e A [110].
Agora, vamos nomear M como a matriz associada com as submatrizes Mm ,

(
)
M , M N/41 , . . . , M1 , M0 , M1 , . . . , M N/41 .
2

(4.5)

A srie de Laurent da matriz M

M (z) := M N/41
2

1
z

N/41
2

+ . . . + M2

N/41
1
1
+ M1 + M0 + M1 z + M2 z 2 + . . . + M N/41 z 2 . (4.6)
2
z
z
2

cujo genus g = N/4 (nas ferramentas de banco de ltros, a notao da srie de Laurent
conhecida como representao polifsica [111]).
A avaliao do espectro discreto de Fourier corresponde ao produto da sequncia de dados
em tempo discreto pela matriz de transformao da DFT, [DF T ] = M (z) |z=W , isto , a
matriz de transformao da DFT

40

(N/4)1
2

M (z) |z=W =

Mm W m .

(4.7)

m= (N/4)1
2

Haja vista que as multiplicaes por W m e W m = (W m ) para um determinado valor


de m so essencialmente equivalentes, estas matrizes so combinadas ao considerar Mm , Mm
e escrever este par de matrizes na forma escalonada padro (SEF - standard echelon form,
refenciado aqui como rref, (do ingls row-reduced echelon form), sendo este o nome da funo
nos aplicativos Matlab e Mathcad).
Por simplicao, consideremos somente as potncias:

{W 0 , W 1 , W 3 , . . . , W (N 1)(N 1) };
{W 0 , W 1 , W 3 , . . . , W (N 1) };
(N/4)1

{W 0 , W 1 , W 1 , W 2 , W 2 , . . . , W 2 , W
( )
( )
e(W ) , cos 2
e m(W ) , sen 2
N
N .

(N/4)1
2

};

Para N 0(mod 8) existe uma falta de simetria, com mais termos positivos que negativos
na expresso 4.7. Por exemplo, para N = 8, a decomposio assume a forma: M (z) |z=W =

M0 + M1 W . Para N = 16 o algoritmo produz M (z) |z=W = M1 W + M0 + M1 W +


M2 W 2 . Em geral, a nica classe assimtrica nas sries, que adicionada s classes simtricas
CN/8 , N 8.

4.2

O novo algoritmo FFT

O algoritmo rpido escrito em termos das matrizes {Mm } de acordo com as seguintes
decomposies:

eDF T = e(M0 ) +

(N/4)1
2

mDF T = m(M0 ) +

e (Mm + Mm ) cos(

m=1

2m
)+
N

(N/4)1
2

m (Mm + Mm ) cos(

m=1

(N/4)1
2

2m
)
N

m=1

2m
m (Mm Mm ) sin(
) , (4.8)
N

(N/4)1
2

e (Mm Mm ) sin(

m=1

2m
) . (4.9)
N

As matrizes e(M0 ) e e(Mm Mm ) so escritas em SEF, e tambm as correspondentes


matrizes m(M0 ) e m(Mm Mm ).
A complexidade multiplicativa do algoritmo rpido computada por

41

(N
4 1)/2

e(Mm + Mm )

posto

m(Mm + Mm )

m=1

+ posto

e(Mm Mm )
m(Mm Mm )

(4.10)

Em todos os casos examinados at aqui, nenhuma reduo do posto foi alcanada quando
empilhamos as matrizes e(Mm Mm ) e m(Mm Mm ), e a complexidade multiplicativa
da FFT foi sempre dada por
(N
4 1)/2

posto(e(Mm + Mm )) + posto(m(Mm + Mm )).

(4.11)

m=1

No exemplo N = 8, existem somente duas matrizes associadas com os termos multiplicativos, ou seja:

e(M1 ) = m(M1 ) =

0 1 0 0 0 1 0
0 0 0 1 0

0 1

ento somente duas multiplicaes por cos(/4) = sin(/4) so requeridas. Vale a pena
observar que o nmero de multiplicaes reais duas unidades menor que a computada pela
Equao 4.10 quando N 0(mod 4), pois uma multiplicao por ej/4 includa.

4.3

Uma FFT para blocos de comprimento N = 12

Para N = 12, iniciamos reunindo os elementos dos expoentes na classe {0, 3, 6, 9}, que no
est associada com multiplicaes (veja 2.16): isto corresponde ao conjunto C0 . A matriz M
com os expoentes dos termos da matriz DFT

M =

10

10

10

11

11

10

10

10

11

10

.
6

11

10

42

Somente existem N/4 = 3 classes, ou seja

C0 = (0, 3, 6, 9),
C1 = (1, 4, 7, 10),
C1 = (11, 2, 5, 8),

0 24 12 36(mod 12),
4 28 16 40(mod 12),
44 20 8 32(mod 12).

Neste caso particular, o maior indice (N/41)/2 = 1. Ou seja, C1 , C0 , C1 so parties


de {0, 1, 2, . . . , 11}, como esperado.
direto observar que dado C0 , os elementos de C1 so derivados ao se adicionar 1(mod N )
a cada elemento de C0 ; os de C1 , ao subtrair 1(mod N ) a cada elemento de C0 , e assim por
diante.
Em seguida, para elucidar a abordagem, assumimos o conjunto das potncias de W

{1, W, W 2 , W 3 , W 4 , W 5 , W 6 , W 7 , W 8 , W 9 , W 10 , W 11 }.
Haja vista que W 0 = 1, W 3 = j , W 6 = 1, W 9 = j , as seguintes classes so consideradas:

C0 = {0, 3, 6, 9} 1, j, 1, j.
C1 = {1, 4, 7, 10} W 1 = 1.W, W 4 = j.W, W 7 = W, W 10 = j.W.
C1 = {11, 2, 5, 8} W 11 = W , W 2 = jW , W 5 = W , W 8 = j.W .
As operaes envolvendo produtos pelos autovalores (elementos de C0 ) e/ou o conjugado
de um complexo no devem ser consideradas como multiplicaes em ponto utuante.
As matrizes de interesse no algoritmo so:
1. M0 = 10 (M ) j3 (M ) 16 (M ) + j9 (M ).
Esta matriz aditiva M0 separada em suas partes real e imaginria.
A parte real da matriz M0

e(M0 ) =

que fornece o posto(e(M0 )) = 6 .


Na SEF, a parte real da matriz, rref (e(M0 )),

.
1

0
0

43

1 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 1 0 1 0 0 0 1

0 0 1 0 0 0 0 0 0 0 1 0
.

0 0 0 1 0 0 0 0 0 1 0 0

0 0 0 0 1 0 0 0 1 0 0 0

0 0 0 0 0 0 1 0 0 0 0 0

A matriz m(M0 )

m(M0 ) =

,
0

0
0

que, por sua vez, produz posto(m(M0 )) = 2.


Na SEF, a matriz imaginria

0 1 0 0 0 1 0 1 0 0 0 1

.
0 0 0 1 0 0 0 0 0 1 0 0
2. M1 = 11 (M ) 17 (M ) j4 (M ) + j1 0(M ).
A parte real da matriz M1

e(M1 ) =

ento, posto(e(M1 )) = 2; a SEF da e(M1 )

,
0

0
1

44

0 1 0 0 0 0 0 1 0 0 0

LI1 =

0 0 0 0 0 1 0

0 0 0 1

A parte imaginria da matriz M1

m(M0 ) =

e posto(m(M1 )) = 6; a SEF

0
LI2 =

da m(M1 )

,
0

0
0

1 0 0 0 0 0 1 0 0 0 0

0 1 0 0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0 0 0 0
.

0 0 0 0 1 0 0 0 0 0 1

0 0 0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 0 0 1 0

3. M1 = 11 1(M ) 15 (M ) j2 (M ) + j8 (M ).
A parte real da matriz M1

e(M1 ) =

.
0

0
0

Ento, o posto(e(M1 )) = 2; alm disso, a SEF da matriz exatamente a mesma da


matriz e(M1 ), ou seja, LI3 = LI1 .
A parte imaginria da matriz M1

45

m(M1 ) =

.
0

1
0

Desse modo, o posto(m(M1 )) = 6, sendo que a SEF desta matriz a mesma de

m(M1 ), ou seja, LI4 = LI2 . Na realidade, m(M1 ) esencialmente uma permutao


de linha (or coluna) de m(M1 ). Em seguida, para avaliar a complexidade multiplicativa da
FFT de comprimento 12, determina-se o posto das matrizes:

e(Mm + Mm ) e m(Mm + Mm ),
e(Mm Mm ) e m(Mm Mm ).
As quatro matrizes de pr-adies associadas com os ramos multiplicativos do algoritmo
so

rref e(M1 + M1 ) = (01000 10 10001),

0 1 0 0 0 1 0 1 0 0 0 1

rref m(M1 M1 ) = 0 0 1 0 0 0 0 0 0 0 1 0 ,

0 0 0 0 1 0 0 0 1 0 0 0

(4.12)

rref e(M1 + M1 ) = (0100010 1000 1),


e

0 1 0 0 0 1 0 1

rref m(M1 M1 ) = 0 0 1 0 0

0 0 0 0 1

0 1

0 0

0 0 1 0

0 .

(4.13)

Por simplicidade, tais matrizes so colocadas na forma compacta. Nesta notao os ndices
indicam o nmero de repeties que o mesmo tem na matriz original:

46

1 03 1

(0103 10 103 1) 02 1 07 1 0

04 1 03 1 03

1 03 1

As Figuras 4.1 e 4.2 apresentam o diagrama de blocos do algoritmo FFT, separando as


partes real e imaginria, respectivamente. A complexidade multiplicativa total de quatro
multiplicaes em ponto utuante, sendo que no so consideradas as quatros multiplicaes
por sen(/6) = 0, 5. Esta atende ao limite inferior de Heideman [53] e muito distante das
144 multiplicaes necessrias para computar a DFT por sua denio.

Figura 4.1: Diagrama para computao da parte real de uma DFT de comprimento N = 12.

De acordo com esta abordagem, as amostras so combinadas por: v1 v5 ; v7 v11 ; v2

v10 ; v4 v8 .
A apresentao aqui foi dividida em duas guras de modo a esclarecer a natureza intrinseca

47

Figura 4.2: Diagrama para computao da parte imaginria de uma DFT de comprimento N = 12.

do algoritmo FFT proposto: a modicao necessria no circuito na parte real (e) para
computar a correspondente parte imaginria (m) inverter o sinal das amostras de entrada.

4.4

Comentrios sobre a FFT para outros comprimentos

Para N = 20, existem exatamente N/4 = 5 classes, correspondendo a m = 0, 1, 2:

C0 = {0, 5, 10, 15}, C1 = {1, 6, 11, 16}, C1 = {19, 4, 9, 14}, C2 = {2, 7, 12, 17} e C2 =
{18, 3, 8, 13}.
As matrizes correspondentes so

rref e(M1 + M1 ), rref e(M1 M1 ),


rref m(M1 + M1 ), rref m(M1 M1 ),
rref e(M2 + M2 ), rref e(M2 M2 ),
rref m(M2 + M2 ), rref m(M2 M2 ),
ou seja,

48

1 07 1

1 07 1

03 1 03 1 05 1 03 1 02

02 1 015 1

03 1

07

03

1 07 1

1 05

03

04 1 011 1 03
06 1

07

1 05

08 1

03

1 07

1 02

As Tabelas 4.1 e 4.2 apresentam o nmero de multiplicaes reais em ponto utuante e


de adies, respectivamente, necessrias para computar a FFT para blocos de comprimento

N 60. A segunda coluna da Tabela 4.1 indica um benchmark (pseudo-algoritmo) para servir
de comparao com comprimentos diferentes das potncias de 2 e a quarta coluna mostra o
limite inferior de Heideman.
Tabela 4.1: Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent
N

N log2 N (arredondado)

Laurent-FFT

Heideman

12

43

20

86

32

32

28

135

72

56

36

186

88

64

44

240

200

120

52

296

288

136

60

354

208

112

Tabela 4.2: Complexidade aditiva da FFT baseada na Srie Matricial de Laurent


N

Laurent-FFT

12

46

20

191

28

244

36

475

44

625

52

858

60

1087

49

A Tabela 4.4 apresenta a complexidade aditiva para a FFT baseada na srie matricial de
Laurent.
Tabela 4.3: Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent para comprimentos potncias de 2
N log2 N

Radix-2

(arredondado)

(real nontrivial)

24

16

64

12

10

10

12

32

160

88

34

16

54

64

384

264

196

84

224

Rader-Brenner

Heideman-Burrus

Laurent-FFT

r (N )

Tabela 4.4: Complexidade aditiva da FFT baseada na Srie Matricial de Laurent para comprimentos
potncias de 2
N

Laurent-FFT

22

16

82

32

354

64

1254

O algoritmo rpido introduzido aqui pode ser usado tambm para qualquer bloco de
comprimento N 0(mod 4), pois assegura a presena dos quatro autovalores da DFT, mas
no h simetria ideal na srie formal. Com isso, mesmo embora esta FFT no tenha sido
concebida primariamente para blocos de comprimento que sejam uma potncia de quatro
[111, 112], o algoritmo tambm pode ser usado neste caso e resultados de complexidade so
mostrados na Tabela 4.3, em comparao com o algoritmo padro Cooley-Tukey base-2. O
limitante de Heideman-Burrus [113] no nmero mnimo de multiplicaes reais necessrio
para computar uma DFT de comprimento N = 2n r = 4N 2{(log2 N )2 + (log2 N ) + 2}.
Ento, mesmo se tais comprimentos no so a principal preocupao do algoritmo, o nmero
de multiplicaes necessrio para esta nova FFT prximo ao valor de r . Com isso, nenhum
fato conitante existe aqui, pois simetrias particulares (tais como ej/4 ) provavelmente no
foram contabilizadas em [113].

50

4.5

Consideraes Finais

Um novo algoritmo rpido, proposto no escopo desta tese, para computar a DFT de comprimento N 4(mod 8) foi apresentado, que baseado nas simetrias das matrizes associadas
com o desenvolvimento em sries de Laurent; com isso, apresentou-se uma FFT para comprimentos que no sejam as costumeiras potncias de dois. Um simples e ilustrativo exemplo
apresentado em detalhes para N = 12, mas o procedimento inteiro sistemtico. A complexidade multiplicativa da FFT avaliada, sendo alcanados valores menores que N log2 N ,
para N = 12, 20, 28, 36, 44, 52, 60. Ainda que exista um grande nmero de tcnicas diferentes
e elegantes para anlise de espectro, incluindo a abordagem aritmtica [56, 57] ou transformada de wavelets [114], que esto entre as melhores escolhas, as FFTs ainda so uma tcnica
extremamente difundida. A FFT apresentada aqui tambm de fcil implementao usando
DSP ou Circuitos Integrados de alta velocidade e baixo custo, como mostrado no Captulo 6.

captulo

Expanso Matricial para


Clculo da
Transformada Discreta
de Hartley

Ao longo dos anos, algoritmos rpidos, em termos de complexidade multiplicativa, foram


introduzidos para o clculo da transformada discreta de Hartley (DHT) [84, 85, 91, 105, 115].
Neste captulo, um novo algoritmo rpido para computao da DHT apresentado para
sequncias de comprimento N 0(mod 4), o qual baseado na expanso da matriz da
transformada. Em termos de complexidade multiplicativa, o algoritmo apresenta um melhor
desempenho que algoritmos anteriormente conhecidos para a transformada de Hartley. Uma
descrio detalhada do clculo da DHT com comprimento de bloco 8 e 16 mostrada. Alguns
algoritmos timos so apresentados para os comprimentos 12, 16 e 24, alm do comprimento

N = 8 que no necessitou de otimizaes.

5.1

Expandindo a matriz da DHT

O primeiro passo em direo FHT (do ingls fast Hartley transform) proposta nesta tese
reescrever a Equao 2.21 na forma matricial

52

H0

H1
H2
..
.

HN 1

...

cas(1)

cas(2)

...

cas(N 1)

1
..
.

cas(2)
..
.

cas(4)
..
.

...
..
.

cas(2(N 1))
..
.

1 cas(N 1) cas(2(N 1)) . . . cas((N 1)(N 1))

h0
h1
h2
..
.

hN 1
(5.1)

ou H(k) = [DHT ]h(n), em que, por simplicidade, denota-se cas( 2


N kn) por cas(kn). Con2
siderando que, para l e r inteiros, cas( 2
N l) = cas( N (l +rN )), somente existem N argumentos

distintos de cas(.) na matriz da transformada. Para todo comprimento de bloco par do tipo

N = 4m, existe um argumento ki que produz um dos autovalores da DHT, a saber 1, 1.


Estes termos no contribuem para a complexidade multiplicativa, pois

cas(0) = cas(N/4) = 1

(5.2)

cas(N/2) = cas(3N/4) = 1.

(5.3)

Os argumentos de cas(.) nas Expresses 5.2 e 5.3 geram um conjunto de dois pontos que
pertencem ao eixo real. Este fato est associado com a classe

C0 = {0, N/4, N/2, 3N/4}.


O conjunto de argumentos distintos de cas(.), ZN = {0, 1, 2, . . . , N 1}, ento particionado em classes Cm , m = 0, 1, 2, . . . , n1
2 , denominadas classes do cas, de modo
que

Para N = (2k + 1)4, existem n =


Para N = (2k)4, existem n =

N
4

N
4

= 2k + 1 classes;

+ 1 = 2k + 1 classes.

A Tabela 5.1 descreve as classes Cm ; observe que |Cm | = 4, m.


Exemplo 5.1
1. Para N = 20, tem-se n = N/4 = 5 classes, descritas na tabela 5.2
2. Para N = 16, tem-se n =

N
4

+ 1 = 5 classes, descritas na tabela 5.3

53

Tabela 5.1: Descrio das classes Cm do cas.


Cm

Elementos

C( n1 )
2
..
.

n1
2

C3

C2

C1

..
.

C1

N 1

C2

N 2

C3
..
.

N 3
..
.
N

Cm

n1
2

N
4

N
4
N
4
N
4

+3
+2
+1
N
2

+
..
.

N
2
N
2
N
2

C0

C( n1 )

de
N
2

n1
2

N
2
N
2
N
2

N
2

3
2
1
N
4

N
4
N
4
N
4

2
3
..
.

n1
2

n1
2

N
4

+1
+2
+3
..
.

n1
2

3N
4

n1
2

3N
4
3N
4
3N
4
3N
4
3N
4 +
3N
4 +
3N
4 +

3
2
1
1
2
3

..
.

3N
4

n1
2

Tabela 5.2: Classes para N = 20. Exemplo 5.1.


Cm

Elementos

de

Cm

C2

12

13

C1

11

14

C0

10

15

C1

19

16

C2

18

17

Tabela 5.3: Classes para N = 16. Exemplo 5.1.


Cm

Elementos

de

Cm

C2

10

10

C1

11

C0

12

C1

15

13

C2

14

14

No exemplo 5.1(2) observa-se que a classe C2 e a classe C2 apresentam elementos repetidos. Esse no um fato isolado e ocorre sempre que N um mltiplo par de 4, como mostrado
nas Proposies 5.1 e 5.2.

54

Proposio 5.1 Se N um mltiplo par de 4, ento, na classe C( n1 ) ,


2

1. Os elementos

n1
2

N
4

n1
2

2. Os elementos

N
2

n1
2

3N
4

so iguais.

n1
2

so iguais.

Demonstrao: Como para N = (2k)4, tem-se n =


1.

N
4

n1
2

=n1

2.

N
2

n1
2

N
2

N
8

n1
2

5N
8

N
4

+ 1, ento

n1
2 .

6N
8

N
8

3N
4

n1
2 .

Proposio 5.2 Se N um mltiplo par de 4, ento, na classe C( n1 ) ,


2

1. Os elementos N

n1
2

3N
4

n1
2

N
4

2. Os elementos

N
2

3. cas(N

= cas( N2

n1
2 )

+
+

n1
2

n1
2

n1
2 )

so iguais.
so iguais.

= 0.

Demonstrao: De forma anloga demonstrao da Proposio 5.1 tem-se


1. N

n1
2

=N

N
8

7N
8

7N
8

n1
2

N
8

3N
8

N
4

2.

N
2

N
2

+
+

N
8

N
8

=
=

3N
4
N
4

n1
2 .

n1
2 .

3. cas(N

n1
2 )

= cas(N

N
8)

2 7N
7
= cas( 7N
8 ) = cas( N 8 ) = cas( 4 ) = 0.

cas( N2

n1
2 )

= cas( N2

N
8)

2 3N
3
= cas( 3N
8 ) = cas( N 8 ) = cas( 4 ) = 0.

Considerando as Proposies 5.1 e 5.2, as classes do cas para N = (2k)4 so mostradas


na Tabela 5.5. Como na classe C( n1 ) todos os valores do cas(.) so nulos, a mesma no
2

apresentada na tabela. Alm disso, os elementos repetidos na classe C( n1 ) no so mostrados.


2

Diante desses fatos, no que se segue consideramos que existem

N
4

classes, N 0(mod 4).

Exemplo 5.2
Para N = 24, tem-se n = N/4 + 1 = 7 classes do cas, (a classe C3 desconsiderada pois o

cas(3) = 0) descritas na Tabela 5.4.

55

Tabela 5.4: Classes para N = 24. Exemplo 5.2.


Cm

Elementos

de

C3

15

C2

14

16

C1

13

17

C0

12

18

C1

23

11

19

C2

22

10

20

Cm

Tabela 5.5: Descrio das classes do cas para N = (2k)4.


Cm

Elementos

C( n1 )
2
..
.

n1
2

C3

C2

C1

..
.

C1

N 1

C2

N 2

C3
..
.

N 3
..
.
N

Cm

n1
2

+3
+2
+1

N
4
N
4
N
4

N
2

+
..
.

N
2
N
2
N
2

C0

C( n3 )

de
N
2

N
2
N
2
N
2

n3
2

N
2

2
1
N
4

1
2
3
..
.

n3
2

N
4
N
4
N
4

N
4

+1
+2
+3
..
.

n3
2

3N
4
3N
4
3N
4
3N
4
3N
4 +
3N
4 +
3N
4 +

3
2
1
1
2
3

..
.

3N
4

n3
2

Vamos introduzir a matriz de argumentos do cas(.) na Equao 2.21, uma matriz N N

A , (akn ) em que akn = (kn(mod N )). O operador Bl aplicado matriz N N , para cada
l = 0, 1, 2, . . . , N 1, produz uma matriz binria N N cujos elementos so (l,mk,n ), em
que o smbolo de Kronecker.
Associada cada classe Cm denimos a matriz Mm como

Mm ,

sgn(cas(l))Bl (A),

(5.4)

lCm

em que sgn(x) retorna o sinal de x. Assim, por exemplo, m = 0 corresponde parte aditiva
da matriz da DHT,

M0 = B0 (A) BN/2 (A) + BN/4 (A) B3N/4 (A).


As seguintes proposies mostram as simetrias da funo cas(.), que so importantes na

56

construo do algoritmo rpido descrito neste captulo.


1. cas(m +

Proposio 5.3

= cas(m).

N
2)

= cas(N m).

2. cas(m +

N
4)

3. cas(m +

3N
4 )

= cas(N m).

Demonstrao:
1. cas(m +

N
2)

= cas( 2
N (m +

N
2 ))

2m
2m
= cas( 2m
N + ) = cos( N + ) + sen( N + ) =

= cas( 2
N (m +

N
4 ))

2m

2m

= cas( 2m
N + 2 ) = cos( N + 2 ) + sen( N + 2 ) =

cas(m).
2. cas(m +

N
4)

cas(N m).
2
3N
2m
3
2m
3
2m
3
3. cas(m + 3N
4 ) = cas( N (m + 4 )) = cas( N + 2 ) = cos( N + 2 ) + sen( N + 2 ) =

cas(N m).

A partir da matriz Mm , m = 0, 1, 2, . . . , N4 1, a matriz da DHT expressa pela seguinte


expanso:
1. Para N um mltiplo par de 4:

((N/4)1)/2

[DHT ] =

Mm cas(m).

(5.5)

m=((((N/4)1)/2)+1)

2. Para N um mltiplo mpar de 4:

((N/4)1)/2

[DHT ] =

[Cc (Mm ) + Cs (Mm )]cas(m),

(5.6)

m=(((N/4)1)/2)

em que as matrizes Cc (Mm ) e Cs (Mm ) so denidas como

Cc (Mm ) = Bm (A) Bm+ N (A),


2

Cs (Mm ) = Bm+ N (A) Bm+ 3N (A).


4

A complexidade multiplicativa dos algoritmos (Equaes 5.5 e 5.6) dada, respectivamente, por

((N/4)1)/2

m=(((N/4)1)/2+1)

posto(Mm )

(5.7)

57

((N/4)1)/2

posto(Cc (Mm )).

(5.8)

m=(((N/4)1)/2)

A complexidade aditiva pode ser computada da seguinte maneira:


1. Empilhamos as matrizes que representam as pr-adies, por

(N/4)1

M Add =

empilhar(Mm ).

(5.9)

m=0

2. Somente com as linhas distintas de M Add fazemos a contagem das operaes por

#linhas(M Add)

M Add[i, ] 1.

(5.10)

i=0

3. Para cada matriz de pr-adio, M , existe uma matriz representando o somatrio nal
da FHT, cuja contagem feita por
#linhas

(N/4)1

i=0

m=((N/41)/2)+1

M Fm [i, ] 1.

(5.11)

Ressalta-se que o procedimento apresentado no Apndice A deve ser aplicado tanto na matriz

M Add quanto nas matrizes M F .


O procedimento para computar a DHT sumarizado da seguinte maneira:
1. Calcular a matriz de argumentos (A);
2. Calcular a matriz de classes;
3. Repetir para todas as classes:

Computar a matriz binria dada pelas Equaes 5.5 e 5.6;


Computar a matriz binria na forma escalonada padro (SEF), referida aqui como
rref ;
Computar as multiplicaes em ponto utuante na matriz binria SEF;
Computar as adies para calcular as components da DHT.

58

5.2

Uma FHT de comprimento N = 8

Para N = 8, iniciamos por reunir os argumentos nas classes {0, 4, 2, 6}, que no esto
associados com multiplicaes. Estes correspondem ao conjunto C0 . A matriz A com os
argumentos dos termos na matriz da DHT

0 0 0

0 1 2

0 2 4

0 3 6
A=

0 4 0

0 5 2

0 6 4

0 0 0 0 0
3 4 5 6 7
6 0 2 4 6
1 4 7 2 5
4 0 4 0 4
7 4 1 6 3
2 0 6 4 2

0 7 6 5 4 3 2 1
Existem somente N/4 = 2 classes, que so C0 = (0, 4, 2, 6) e C1 = (1, 5). Neste caso
particular, o maior indice (N/4) 1 = 1.
As operaes envolvendo produtos pelos autovalores, associados aos elementos de C0 , no
devem ser consideradas como multiplicaes em ponto utuante.
As matrizes de interesse no algoritmo so:

M0 = B0 (A) B4 (A) + B2 (A) B6 (A),


e

M1 = B1 (A) B5 (A).
A matriz aditiva M0

M0 =

1 1

1 1

1 1 1

1 1
0

0
,

59

que fornece posto = 6. Em SEF

rref (M0 ) =

1 0 0 0 0 0 0 0

0 1 0 0 0 1 0 0

0 0 1 0 0 0 0 0
.

0 0 0 1 0 0 0 1

0 0 0 0 1 0 0 0

0 0 0 0 0 0 1 0

A matriz de pr-adio M1 , associada s multiplicaes,

M1 =

0 1 0

0 1

0 1 0

0 1 0

cujo posto 2 e sua SEF

rref (M1 ) =

0 1 0 0 0 1 0
0 0 0 1 0

0 1

Em seguida, para avaliar a complexidade multiplicativa da FHT de comprimento 8, determinamos o posto(Mm ).


A matriz de pr-adio associada com os ramos multiplicativos do algoritmo

rref (M1 ) =

0 1 0 0 0 1 0
0 0 0 1 0

0 1

A Figura 5.1 mostra um diagrama para implementao do algoritmo FHT. A complexidade


multiplicativa de duas multiplicaes em ponto utuante, que atinge o limite inferior de
Heideman [53]. Da Equao 5.5, a expanso matricial da DHT [DHT ] = M0 + M1 cas(1),
ou seja,

60

[DHT ] =

0


1

0

+

1


0

1

0

cas(1).
0

Figura 5.1: Esquema para a computao da FHT de comprimento N = 8. Destaque para as duas
multiplicaes reais requeridas.

O pseudo-cdigo apresentado a seguir decreve os clculos, mostrando as multiplicaes


em ponto utuante. Alm disso, podemos ver que a combinao linear de somadores envolve
multiplicaes apenas por 1 e -1, que so triviais.

61

Algoritmo 5.1: Computando as pr-adies e multiplicaes em ponto utuante.


1

para i = 0 at (N 1) faa

V M (i) = 0 ;

2
3

m para

para j = 0 at (N 1) faa
para j = 0 at (N 1) faa

se MRed(i,j) = 1 ento

para j = j at (N 1) faa

T mp = T mp + M Red(i, j) ;

m para

V M (i) = T mp Cas(m) ;

10
11

m se

12

m para

13

m para

Algoritmo 5.2: Computando o vetor das ps-adies.


1

para i = 0 at (N 1) faa
para j = 0 at (N 1) faa

M C(j, i) = M C(j, i) + M (j, i) V M (i) ;

m para

4
5

m para

para i = 0 at (N 1) faa

para j = 0 at (N 1) faa

H(i) = H(i) + M C(i, j) ;


m para

9
10

m para

5.3

Uma FHT de comprimento N = 16

Para N = 16 existem 4 classes, a saber

62

C2 = {2, 10},
C0 = {0, 8, 4, 12},
C1 = {1, 9, 3, 11},
C1 = {15, 7, 5, 13}.

A matriz A com os argumentos dos termos na matriz DHT

A=

10 12 14 0

12 15

12

12 0

10 15

14

12

14

10 0

14

12

10

8 15

11

13

15 8

0 10

14

12

0 11

12

13 8

0 12

12

0 13 10

14 11 8

0 14 12 10

0 14

0 15 14 13 12 11 10

8 11
4

8 13
6

0 10
3

0 12

As matrizes relevantes so
1. M0 = B0 (A) B8 (A) + B4 (A) B12 (A),

10 11 12 13 14 15

4 6 8 10 12 14

14 1 4 7 10 13

8 12 0 4 8 12

2 7 12 1 6 11

12 2 8 14 4 10

6 13 4 11 2 9

.
0 8 0 8 0 8

10 3 12 5 14 7

4 14 8 2 12 6

14 9 4 15 10 5

8 4 0 12 8 4

2 15 12 9 6 3

12 10 8 6 4 2

6 5 4 3 2 1

63

M0 =

1 1

1 1 1

1 1

1 1

1 1

1 1

1 1

1 1

que fornece o posto(M0 ) = 8.


Na SEF, a matriz M0

M0 =

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0

0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
.

0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0

2. M1 = B1 (A) B9 (A) + B3 (A) B11 (A),

1 1

64

M1 =

0 1 0 1 0

0 1 0

0 1 0

0 1 0

0 1

0 1 0 1

0 1 0 1 0

0 1 0

0 1 0

0 1 0

0 1 0

0 1 0 1 0

que fornece o posto(M1 ) = 4.


Na SEF, a matriz M1

0 1 0 0

0 0 1 0

0 0 0 1 0 0 0 0 0
M1 =

0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 1 0

0 1 0

3. M1 = B15 (A) B7 (A) + B5 (A) B13 (A),

0
.

0 1 0 0

0 0 0 1

65

M1

0 1 0

0 1 0

0 1 0 1

0 1 0 1 0

0 1 0

0 1 0

0 1 0

0 1

0 1 0 1 0

0 1 0 1 0

0 1 0

0 1 0

0 1 0

que fornece o posto(M1 ) = 4.


Na SEF, a matriz M1

M1

0 1 0 0 0 0 0 0 0 1 0

0 0 0 1 0 0 0 0 0
=

0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 1 0

4. M2 = B2 (A) B10 (A),

0
.

0 1 0 0

0 0 0 1

66

M2 =

0 1

0 1

1 0

0 1

0 1

1 0

1 0

0 0 1

que fornece o posto(M2 ) = 4.


Na SEF, a matriz M2

0 1 0 0 0 1 0

0 0 1 0 0
M2 =

0 0 0 1 0

0 0 0 0 0

0 1

0 0 1 0 0

0 1 0 0

1 0

0 0

0 0

0
.

0 1

1 0
0

A complexidade aditiva para a DHT de comprimento N = 16 de 64 operaes. Da


Equao 5.6, a expanso matricial da DHT

[DHT ] = M0 + M1 cas(1) + M1 cas(1) + M2 cas(2).


O esquema para a computao da DHT de comprimento 16 mostrado na Figura 5.2
Podemos observar nesta Figura (destacado no retngulo) que as componentes de entrada
(v0 , v2 , v4 , v6 , v8 , v10 , v12 , v14 ) servem como entrada para uma DHT de comprimento 8, inerente
DHT de comprimento 16.

67

Figura 5.2: Esquema para a computao da FHT de comprimento 16, destacando-se a existncia da
FHT de comprimento 8 no esquema.

68

Tabela 5.6: Complexidade do algoritmo FHT baseado em expanso matricial, para uma sequncia real,
em termos do nmero de multiplicaes em ponto utuante, e dos algoritmos FHT base-2, base-4 e
Split-Radix.
N

base-2

base-4

Split-Radix

Limite inferior

Expanso

de Heideman

Matricial FHT

16

20

14

12

10

12

32

68

42

32

40

64

196

142

124

84

96

128

516

330

198

256

256

1284

942

828

438

640

512

3076

1994

932

1408

1024

7172

5294

4668

1936

3328

2048

16388

10698

3962

7680

4096

36868

27310

24124

8034

16384

Os resultados de complexidade multiplicativa para a FHT baseada na expanso matricial so mostrados na Tabela 5.6, em comparao com o limite inferior de Heideman e com
os algoritmos FHT base-2, base-4 e Split-Radix [85]. A Figura 5.3 mostra a complexidade
multiplicativa dos algoritmos na Tabela 5.6 como uma funo de N . Deve-se observar que
as complexidades para os comprimentos N = (8, 32, 128, 512, 2048), para o algoritmo base-4,
no so reportadas em [85].

Figura 5.3: Complexidade multiplicativa para os algoritmos FHT (base-2, Split-Radix e expanso
matricial) e limite inferior de Heideman, em funo do comprimento N da transformada.

69

Os resultados da complexidade aditiva para a FHT baseada na expanso matricial so


mostrados na tabela 5.7, em comparao com os algoritmos padro FHT base-2, base-4 e
Split-Radix [85].
Tabela 5.7: Complexidade aditiva do algoritmo FHT baseado em expanso matricial e dos algoritmos
FHT base-2, base-4 e Split-Radix.
N

base-2

base-4

Split-Radix

Expanso
Matricial FHT

5.4

26

22

22

16

74

70

64

64

32

194

166

166

64

482

450

416

416

128

1154

998

998

256

2690

2498

2336

2336

512

6146

5350

5350

Otimizando a FHT de comprimento N = 12

O algoritmo proposto efetua a computao da DHT de comprimento 12 com 16 multiplicaes. Nesta seo feita uma otimizao do mesmo para que esta DHT seja computada
com o nmero mnimo de multiplicaes, ou seja, 4.
Inicia-se por reunir os argumentos nas 3 classes, a saber

C1 = {1, 7, 2, 8},
C0 = {0, 6, 3, 9},
C1 = {11, 5, 4, 10}.
em que C0 no est associada com multiplicaes, C1 est associada ao cas(1) = cas(/6)
e C1 est associada ao cas(1) = cas(/6).
Proposio 5.4 Se N da forma 12i ou

12
5 i,

ento D := cas(i) cas(N i) = 1.

Demonstrao: D := cas(i) cas(i) = cos(i) + sen(i) cos(i) + sen(i),

D = 2sen(i) = 2sen( 2
N i).
2
Para N = 12i, D = 2sen( 12i
i) = 2sen( 6 ) = 1 ;

Para N =

12
5 i

2
, D = 2sen( 12i/5
i) = 2sen( 5
6 ) = 1.

70

Denindo-se

ha = h1 + h7 ,
hb = h1 h7 ,
hc = h2 + h8 ,
hd = h2 h8 ,
he = h4 + h10 ,
hf

= h4 h10 ,

hg = h5 + h11 ,
hh = h5 h11 ,
as componentes da transformada em que ocorrem as multiplicaes so

H1 = (hb + hd )cas(1) + (hf hh )cas(1) e


H5 = (hf hh )cas(1) (hb hd )cas(1);
H2 = (ha he )cas(1) + (hc hg )cas(1) e
H10 = (hc hg )cas(1) (ha he )cas(1);
H4 = (hc + hg )cas(1) + (ha + he )cas(1) e
H8 = (ha + he )cas(1) + (hc + hg )cas(1);
H7 = (hd hb )cas(1) + (hf + hh )cas(1) e
H11 = (hf + hh )cas(1) (hd hb )cas(1).

Aplicando a relao cas(1) cas(1) = 1, estas expresses, obtidas da Proposio 5.4


para N = 12, podem ser reescritas como

71

H1 = [(hb + hd ) + (hf hh )]cas(1) + (hf hh ) e


H5 = [(hb + hd ) + (hf hh )]cas(1) (hb + hd );
H2 = [(ha he ) + (hc hg )]cas(1) + (hc hg ) e
H10 = [(ha he ) + (hc hg )]cas(1) (ha he );
H4 = [(ha + he ) (hc + hg )]cas(1) + (ha + he ) e
H8 = [(ha + he ) (hc + hg )]cas(1) + (hc + hg );
H7 = [(hd hb ) + (hf + hh )]cas(1) + (hf + hh ) e
H11 = [(hd hb ) + (hf + hh )]cas(1) (hd hb ).

Observa-se que existem apenas 4 multiplicaes distintas em ponto utuante, todas por

cas(1) = cas(/6), valor que atinge o limite inferior de complexidade multiplicativa de Heideman. A Figura 5.4 apresenta um esquema para implementar este algoritmo timo. O
diagrama foi construdo em termos da transformada de Walsh-Hadamard de comprimento

N = 2 [91], Figura 5.5.

5.5

Otimizando a FHT de comprimento N = 16

O produto dos nmeros complexos (a + jb) e (c + jd) requer quatro multiplicaes reais,
uma vez que se

e + jf

:= (a + jb)(c + jd)

ento

e = ac bd
e

= ad + bc.

Em [29] apresentado um algoritmo rpido para computar este produto, que requer 3
multiplicaes. Especicamente,

e = (a b)d + a(c d)

(5.12)

72

Figura 5.4: Algoritmo timo para a computao de uma DHT de comprimento N = 12.

73

Figura 5.5: Diagrama para representao da transformada de Walsh-Hadamard para comprimento


N = 2.

= (a b)d + b(c + d).

(5.13)

No que se segue, este algoritmo usado para reduzir a complexidade multiplicativa da FHT
obtida pela tcnica de expanso matricial. O procedimento envolve apenas as componentes
mpares da sequncia h de comprimento 16, cuja DHT se deseja computar, conforme indica a
Figura 5.6. Denindo-se

ha = h1 h9 ,
hb = h5 h13 ,
hc = h3 h11 ,
hd = h7 h15 ,
e considerando a Figura 5.6, pode-se obter as seguintes expresses:

A = ha (cas(1)) + hc (cas(1)) = (ha + hc )cas(1);


B = ha (cas(1)) + hc (cas(1)) = (ha + hc )cas(1);
E = ha (cas(1)) hc (cas(1)) = (ha hc )cas(1);
F
e

= ha (cas(1)) hc (cas(1)) = (ha hc )cas(1),

74

Figura 5.6: Multiplicaes para computar a DHT de comprimento 16, envolvendo as componentes
mpares da sequncia h a ser transformada.

C = hb (cas(1)) + hd (cas(1)) = (hb + hd )cas(1);


D = hb (cas(1)) + hd (cas(1)) = (hb + hd )cas(1);
G = hb (cas(1)) hd (cas(1)) = (hb hd )cas(1);
H = hb (cas(1)) hd (cas(1)) = (hb hd )cas(1).
Fazendo a combinao de (A, H), (D, E), (B, G) e (C, F ) temos

I = A + H = (ha + hc )cas(1) + (hb hd )cas(1);


J

= D + E = (ha hc )cas(1) + (hb + hd )cas(1);

L = B G = (ha + hc )cas(1) (hb hd )cas(1);


M

= C F = (ha hc )cas(1) + (hb + hd )cas(1).

Pode-se notar que os valores de I e L tem a mesma forma que a multiplicao de nmeros
complexos; com isso pode-se aplicar as Equaes 5.12 e 5.13 para reduzir o nmero de multiplicaes. As novas expresses de I e L so

75

I = (ha + hc )cas(1) + (hb hd )cas(1)


= [cas(1) + cas(1)](hb hd ) + [(ha + hb ) + (hb hd )]cas(1),
L = (ha + hc )cas(1) (hb hd )cas(1)
= [cas(1) + cas(1)](hb hd ) + [(ha + hb ) (hb hd )]cas(1).
Com isso, uma multiplicao deixou de ser efetuada; alm disso, nenhuma adio ser acrescentada, pois cas(1) + cas(1) = 2cos(1). Aplicando a mesma operao para J e M, obtm-se

= (hb + hd )cas(1) + (ha hc )cas(1)


= [cas(1) + cas(1)](ha hc ) + [(hb + hd ) + (ha hc )]cas(1),

= (hb + hd )cas(1) (ha hc )cas(1)


= [cas(1) + cas(1)](ha hc ) + [(hb + hd ) (ha hc )]cas(1).

O algoritmo proposto anteriormente efetuou a computao da DHT com 12 multiplicaes.


Com a reduo de duas multiplicaes, como mostrado nas expresses de I, J, L e M, obtm-se
um algoritmo timo, pois o mesmo efetua a computao da DHT de comprimento 16 com um
nmero mnimo de multiplicaes [53].
A Figura 5.7 mostra um esquema para a implementao deste algoritmo.

5.6

Otimizando a FHT de comprimento N = 24

Inicia-se por reunir os argumentos na classe C0 = {0, 12, 6, 18}, que no esto associados com multiplicaes. Alm desta, tem-se as classes C1 = {23, 11, 7, 19}, associada
ao cas(1) = cas(/12), C1 = {1, 13, 5, 17} associada ao cas(1) = cas(/12), C2 =

{22, 10, 8, 20}, associada ao cas(2) = cas(/6), C2 = {2, 14, 4, 16} associada ao cas(2) =
cas(/6) e C3 = {3, 15} associada ao cas(3) = cas(/4).
Assim como na DHT de comprimento N = 12, tem-se os ngulos /6 e /6 formando
a relao cas(/6) cas(/6) = 1. Em relao s classes sugeridas pode-se exprimir como

cas(2) cas(2) = 1. Denindo-se

76

ha = h1 + h13 , hb = h1 h13 ,
hc = h2 + h14 , hd = h2 h14 ,
he = h3 + h15 , hf = h3 h15 ,
hg = h4 + h16 , hh = h4 h16 ,
hi = h5 + h17 , hj = h5 h17 ,
hl = h6 + h18 , hm = h6 h18 ,
hn = h7 + h19 , ho = h7 h19 ,
hp = h8 + h20 , hq = h8 h20 ,
hr = h9 + h21 , hs = h9 h21 ,
ht = h10 + h22 , hu = h10 h22 ,
hv = h11 + h23 , hx = h11 h23 ,
as componentes da transformada em que ocorrem as multiplicaes por cas(1), cas(1) e

cas(3) so

H1 = (hb + hj )cas(1) + (ho hx )cas(1) + (hf )cas(3);


H3 = ((hb hj ) + hr )cas(3);
H7 = (ho + hx )cas(1) + (hb hj )cas(1) (hr )cas(3);
H9 = (hf (ho hx ))cas(3).
Sabendo que cas(1) =

cas(3)
2 ,

tem-se

ho hx
) + hf )cas(3);
2
= ((hb hj ) + hr )cas(3);
hb hj
) hr )cas(3);
= (ho + hx )cas(1) + ((
2
= (hf (ho hx ))cas(3).

H1 = (hb + hj )cas(1) + ((
H3
H7
H9

As componentes da transformada em que ocorrem multiplicaes por cas(2) e cas(2)


so

77

H1 = (hd + hh )cas(2) (hq + hu )cas(2) e


H5 = (hq + hu )cas(2) (hd + hh )cas(2),
H2 = (ha + hc hn hp )cas(2) (hg + hi + ht hv )cas(2) e
H10 = (hg + hi + ht hv )cas(2) (ha + hc hn hp )cas(2),
H4 = (ha hg + hn ht )cas(2) (hc + hi hp + hv )cas(2) e
H20 = (hc + hi hp + hv )cas(2) (ha hg + hn ht )cas(2),
H7 = (hd + hh )cas(2) (hq hu )cas(2) e
H11 = (hq hu )cas(2) (hd + hh )cas(2),
H8 = (hc hi hp hv )cas(2) (ha hg hn ht )cas(2) e
H16 = (ha hg hn ht )cas(2) (hc hi hp hv )cas(2),
H14 = (ha + hc + hn hp )cas(2) (hg hi + ht + hv )cas(2) e
H22 = (hg hi + ht + hv )cas(2) (ha + hc + hn hp )cas(2).
Aplicando a relao cas(2) cas(2) = 1, chega-se a

H1 = ((hd + hh ) (hq + hu ))cas(2) (hq + hu ) e


H5 = ((hq + hu ) (hd + hh ))cas(2) (hd + hh ),
H2 = ((ha + hc hn hp ) (hg + hi + ht hv ))cas(2) (hg + hi + ht hv ) e
H10 = ((hg + hi + ht hv ) (ha + hc hn hp ))cas(2) (ha + hc hn hp ),
H4 = ((ha hg + hn ht ) (hc + hi hp + hv ))cas(2) (hc + hi hp + hv ) e
H20 = ((hc + hi hp + hv ) (ha hg + hn ht ))cas(2) (ha hg + hn ht ),
H7 = ((hd + hh ) (hq hu ))cas(2) (hq hu ) e
H11 = ((hq hu ) (hd + hh ))cas(2) (hd + hh ),
H8 = ((hc hi hp hv ) (ha hg hn ht ))cas(2) (ha hg hn ht ) e
H16 = ((ha hg hn ht ) (hc hi hp hv ))cas(2) (hc hi hp hv ),
H14 = ((ha + hc + hn hp ) (hg hi + ht + hv ))cas(2) (hg hi + ht + hv ) e
H22 = ((hg hi + ht + hv ) (ha + hc + hn hp ))cas(2) (ha + hc + hn hp ).
Observa-se que existem somente 6 multiplicaes em ponto utuante, todas por cas(2) =

cas(/6). No total foram 12 multiplicaes em ponto utuante, atingindo o limite de Heide-

78

man. A Figura 5.8, apresenta um esquema para o algoritmo timo, enquanto que na expanso
matricial existem 32 multiplicaes em ponto utuante.

5.7

Consideraes Finais

Um novo algoritmo rpido para a transformada discreta de Hartley de comprimento N

0(mod 4) foi proposto, o qual baseado em uma nova tcnica para construo de uma expanso
matricial da matriz de transformao. O procedimento faz uso das simetrias da expanso
matricial e da funo cas(.) para reduzir a complexidade aritmtica para computar o espectro
discreto de Hartley. Exemplos detalhados para ilustrar a tcnica foram apresentados para N =

8 e 16, mas o procedimento sistemtico. A transformada rpida de Hartley apresentada aqui


tambm simples de implementar usando um DSP ou circuitos integrados de alta velocidade
e baixo custo. O algoritmo apresenta um melhor desempenho, em termos de complexidade
multiplicativa, que os algoritmos FHT padro Cooley-Tukey base-2, base-4 e Split-Radix ;
alm disso, tem o mesmo desempenho, em termos de complexidade aditiva, que o algoritmo
FHT Split-Radix.

79

Figura 5.7: Algoritmo timo para a computao de uma DHT de comprimento N = 16.

80

Figura 5.8: Algoritmo timo para a computao de uma DHT de comprimento N = 24.

captulo

Uma Implementao em
FPGA das Transformadas
de Fourier e Hartley de
Comprimento 16 Baseada
em Sries Matriciais de
Laurent

6.1

Introduo

Este captulo descreve uma arquitetura exvel para implementao de uma nova transformada rpida para computao das transformadas discretas de Fourier e de Hartley, que
baseada em uma srie matricial de Laurent. O dispositivo calcula as transformadas baseado
em uma nico bit para seleo da operao. A estrutura e sntese do hardware so apresentados, o qual processa uma transformada rpida de comprimento 16 em 65 ns, com um
dispositivo Xilinx SPARTAN 3E.

6.2

Field Programmable Gate Arrays (FPGA)

Em 1984, a Xilinx Inc. desenvolveu dispositivos lgicos programveis capazes de serem


congurados para reproduzir o comportamento de um hardware. Estes foram chamados de
Field Programmable Gate Arrays (FPGA) [116, 117]. Estes dispositivos so formados por

82

blocos lgicos programveis que so conectados por interligaes programveis, o que permite a
criao de circuitos lgicos, sendo limitados pela rea e memria disponveis. Sua exibilidade
dada pela facilidade de congurao atravs de uma descrio de hardware escrita em VHDL
ou Verilog. O FPGA composto basicamente por trs tipos de componentes:

Bloco Lgico Cogurvel - CLB (do ingls Conguration Logical Block ): so blocos construdos com ip-ops e lgica combinacional que permitem a construo de elementos lgicos
funcionais.

Bloco de Entrada/Sada - IOB (do ingls Input/Output Block ): fazem a interface entre
CLBs, funcionando como buers de entrada e sada.

Chaves Programveis: representam a conexo entre os blocos lgicos. Permitem a conexo


de CLBs e IOBs usando trilhas com conexo programveis.
A Figura 6.1 mostra os blocos lgicos que esto disponveis nos dispositivos FPGAs.

Figura 6.1: Arquitetura bsica de um dispositivo FPGA.

6.3

O Algoritmo FFT/FHT

Das Equaes 2.16 e 2.21, aparente que a DHT computada pela DFT conforme a
Equao 6.1.

Hk = e(Vk ) m(Vk ).

(6.1)

O algoritmo rpido escrito de acordo com a seguinte decomposio matricial da DFT:

eDF T = e(M0 ) +

(N/4)1
2

m=1

e (Mm + Mm ) cos(

2m
)+
N

(N/4)1
2

m=1

2m
) , (6.2)
m (Mm Mm ) sin(
N

83

mDF T = m(M0 ) +

(N/4)1
2

m (Mm + Mm ) cos(

m=1

2m
)
N

(N/4)1
2

e (Mm Mm ) sin(

m=1

2m
) , (6.3)
N

em que as matrizes Mm so dadas pela Equao

Mm :=

(j)

4(lm)
N

l (M ).

(6.4)

lCm

O operador l (l = 0, 1, 2, . . . , N 1) atua em uma matriz (N N ), produzindo uma nova


matriz binria (N N ) cujos elementos so (l,m ) com m := mk,n , em que o smbolo de
Kronecker. As matrizes e(M0 ), e(Mm Mm ), m(M0 ) e m(Mm Mm ) so ento
escritas na forma padro.
A complexidade multiplicativa da transformada rpida computada pela Equao
(N
4 1)/2

posto

m=1

e(Mm + Mm )
m(Mm + Mm )

+ posto

e(Mm Mm )
m(Mm Mm )

(6.5)

Em todos os casos examinados at aqui, nenhuma reduo do posto foi alcanada quando
empilhamos as matrizes e(Mm Mm ) e m(Mm Mm ), e a complexidade multiplicativa
da FFT foi sempre dada por
(N
4 1)/2

posto(e(Mm + Mm )) + posto(m(Mm + Mm )).

m=1

De 6.2 e 6.3, as componentes da DHT so computadas pela Equao 6.1.

6.4

Metodologia de projeto e arquitetura

O projeto foi realizado por meio das seguintes fases:

Especicao;
Descrio VHDL;
Simulao comportamental;
Sntese.

(6.6)

84

6.4.1 Especicao
O projeto visa a construo de um dispositivo para computao rpida da DFT/DHT, para
uma sequncia de comprimento 16; todos os valores da sequncia de entrada so representados
por uma palavra de 16 bits. A computao feita utilizando-se aritmtica de ponto xo (7
bits). Toda componente da sequncia de sada representada por uma palavra de 32-bits,
com 16 bits para sua parte real e 16 bits para sua parte imaginria. Com um bit de seleo,
o usurio escolhe qual das transformadas ser computada. A Figura 6.2 ilustra como caram
as entradas e sadas no dispositivo.

Figura 6.2: Viso geral da estrutura do dispositivo para computar a FFT/FHT.

6.4.2 Descrio VHDL


A descrio VHDL do dispositivo foi gerada com a ajuda do Simulink do MatlabTM . A
Figura 6.8 ilustra a implementao feita no SimulinkTM . A gura 6.5 ilustra a arquitetura
do dispositivo. A descrio VHDL gerada pelo Simulink do MatlabTM foi a do bloco ncleo,
em que feita a computao da DFT, sendo que o cdigo-fonte est no CD em anexo. A
descrio VHDL dos demais blocos foi implementada sem a ajuda do software Simulink do
MatlabTM e o seu cdigo-fonte apresentado no CD em anexo.

6.4.3 Simulao Comportamental


Com a ferramenta Xilinx ISE, a descrio VHDL foi compilada e simulada para vericar
os dados de sada. Erros de sintaxe foram retirados neste momento. A Tabela 6.1 mostra a

85

quantidade de recursos utilizada pela implementao.


Tabela 6.1: Recursos utilizados no dispositivo FPGA para implementao da FFT/FHT de comprimento 16.
Descrio do Recurso

Quantidade

Number of Slices:

1611 out of 4656 (34%)

Number of Slice Flip Flops:

656 out of 9312 (7%)

Number of 4 input LUTs:

2894 out of 9312 (31%)

Number of bonded IOBs:

56 out of 232 (24%)

Number of MULT18X18SIOs:

12 out of 20 (60%)

Number of GCLKs:

2 out of 24 (8%)

A simulao comportamental foi realizada pela ferramenta Xilinx ISE e os arquivos de


testbench foram gerados. Os estmulos (valores de entrada) foram inseridos e os resultados
coletados de acordo com os diagramas da Fig. 6.3 (DHT) e Fig. 6.4 (DFT).

Figura 6.3: Resultado de simulao quando a operao est selecionada para computar a DHT.

6.4.4 Sntese
Nesta etapa, o cdigo VHDL foi analisado e otimizado pela ferramenta de sntese, para
em seguida criar-se uma implementao eciente do dispositivo. Um esquema a Nvel de
Registrador de Transferencia (RTL - Register Transfer Level ) foi gerado.

86

Figura 6.4: Resultado de simulao quando a operao est selecionada para computar a DFT.

A ferramenta de construo gerou os arquivos para burn-in no dispositivo FPGA escolhido,


o dispositivo Spartan 3E, xc3s500e-5-fg320. Na simulao de ps-sntese o processo no circuito
nalizou em 65 ns e todos os resultados obtidos conrmaram a simulao comportamental.

6.4.5 Arquitetura
A arquitetura do dispositivo baseada em dois blocos principais, o gerenciador de memria
e o bloco ncleo, como mostrado na Figura 6.5. O bloco gerenciador de memria armazena
as componentes do sinal de entrada e as componentes da transformada de sada.
O bloco ncleo responsvel pelo cculo dos coecientes da DFT, conforme Figura 6.6.
Destes, o bloco gerenciador de memria seleciona e computa a transformada desejada.
Aps o armazenamento na memria, o dispositivo calcula a transformada baseada no operador de seleo (DFT/DHT). Assim, a transformada armazenada na memria, da seguinte
maneira:

Para a DFT: os primeiros dois bytes armazenam as componentes reais e os ltimos dois
armazenam as componentes imaginrias;

Para a DHT: somente os ltimos 16 bits amazenam as componentes da transformada.


O bloco ncleo foi gerado a partir da implementao em SimulinkTM . A complexidade
aritmtica para este algoritmo rpido de comprimento 16 de 12 multiplicaes em ponto

87
Seleo
DHT/DFT

Gerenciador de
Memria

Bloco de
Entrada

Bloco de
Sada

(16-bits)

(32 - bits)
Ncleo
(DFT)

Figura 6.5: Arquitetura do algoritmo FFT/FHT. O bloco de computao aritmtica corresponde ao


bloco ncleo.

(16 amostras)
Parte
Real

(16 bits)

(16 amostras)
(16 bits)

Computao
da DFT
(16 amostras)
Parte
Imaginria

(16 bits)

Figura 6.6: Arquitetura do bloco ncleo. Este bloco usado por ambas as transformadas (Veja Figura
6.5).

xo e 101 adies.
As sequncias de entrada e sada, na Figura 6.7, so mostradas em formato hexadecimal
ao se usar o bloco de converso de tipos de dados. O bloco ncleo mostrado no meio, que
corresponde Figura 6.6. Suas duas sequncias de sada so mostradas tambm, ou seja,
DFT (Real) e DFT (Imaginria). O bloco de adio (Add, Figura 6.7) fornece diretamente a
DHT, que mostrada tambm em formato hexadecimal.

88

Figura 6.7: Simulao implementada em SimulinkTM do algoritmo FFT/FHT de comprimento 16.

6.5

Resultados de Simulao

A implementao foi simulada utilizando-se a ferramenta Xilinx ISE, onde pudemos vericar a preciso do dispositivo e os resultados foram comparados com os obtidos a partir do
SimulinkTM . Os resultados so mostrados nas Figuras 6.3, 6.4 e 6.7. A simulao foi feita com
diversas sequncias de entrada. Para a sequncia particular v = {0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7},
os resultados so mostrados na Tabela 6.2 e 6.3.
As sequncias de sada da DFT realizada pela simulao, foram exatamente as mesmas
obtidas pelo SimulinkTM (Coluna 3, Tabela 6.3). Ambas tem uma pequena diferena em
relao sequncia computada pela rotina interna do MatLabTM (Coluna 3, Tabela 6.2). O
erro de quantizao ( 0, 3%) devido ao uso da aritmtica de ponto xo em vez da de ponto
utuante. No entanto, esse erro de magnitude aceitvel para muitas aplicaes, incluindo
udio, sinais biomdicos e processamento da fala [29].

89

Tabela 6.2: Valores da DFT/DHT gerados via MatLabTM .

6.6

ndice

Dados de

Dados de Sada

(k)

Entrada

DFT

DHT

56.000

56.0000

-8.0000 +19.3137j

-27.3137

-8.0000 + 8.0000 j

-16.0000

-8.0000 + 3.3137j

-11.3137

-8.0000

-8.0000

10

-8.0000 - 3.3137j

-4.6863

11

12

-8.0000 - 8.0000j

13

14

-8.0000 -19.3137j

11.3137

15

Consideraes Finais

Este captulo apresentou o projeto e implementao, no dispositivo SPARTAN 3E xc3s500e5-fg320, de um algoritmo que capaz de fazer a computao rpida dos coecientes da
DFT/DHT de uma sequncia real de comprimento N = 16.

O dispositivo computa a

DFT/DHT em 65 ns, que aceitvel para aplicaes tais como udio, processamento de sinais
biomdicos e xDSL. Uma implementao do dispositivo em ponto utuante est atualmente
em investigao.

90

Tabela 6.3: Valores da simulao comportamental (Xilinx) da DFT/DHT de comprimento 16.


ndice

Dados de

Dados de Sada

(k)

Entrada

DFT

DHT

56

56

-8.0000 +19.375j

-27.375

-8.0000 + 8.0000 j

-16.0000

-8.0000 + 3.375j

-11.375

-8.0000

-8.0000

10

-8.0000 - 3.375j

-4.625

11

12

-8.0000 - 8.0000j

13

14

-8.0000 -19.375j

11.375

15

91

Figura 6.8: Implementao em SimulinkTM da FFT/FHT de comprimento 16.

captulo

Concluses

Esta Tese apresentou novos algoritmos rpidos para computao de transformadas discretas. O Captulo 2 derivou a Transformada Discreta de Fourier, a partir da Srie Discreta de
Fourier e da Transformada de Fourier em Tempo Discreto e nalizou com a representao em
forma matricial da mesma. Alm disso, este captulo apresentou a denio da transformada
discreta de Hartley.
O Captulo 3 apresentou a transformada rpida de Fourier, que so algoritmos rpidos
para computar a DFT. Os algortimos de Cooley-Tukey, Good-Thomas e Rader-Primo foram
detalhados.
O Captulo 4 apresentou um novo algoritmo rpido para computar a DFT de comprimento

N 4(mod 8), que baseado nas simetrias das matrizes associadas com o desenvolvimento
em srie de Laurent da matriz de transformao; com isso, apresentou-se uma FFT para
comprimentos que no sejam as costumeiras potncias de dois. Um exemplo elucidativo
foi apresentado para N = 12. A complexidade multiplicativa da FFT foi avaliada, sendo
alcanados valores menores que N log2 N , para N = 12, 20, 28, 36, 44, 52, 60.
O Captulo 5 apresentou um novo algoritmo rpido para a transformada discreta de Hartley de comprimento N 0(mod 4), que baseado em uma nova tcnica para construo de
uma expanso matricial da matriz de transformao. O procedimento faz uso das simetrias da
expanso matricial para reduzir a carga computacional para computar o espectro discreto de
Hartley. O algoritmo apresentou um melhor desempenho, em termos de complexidade multiplicativa, que os algoritmos FHT padres Cooley-Tukey base-2, base-4 e Split-Radix. Alm
disso, este captulo apresentou algoritmos timos, em termos de complexidade multiplicativa,

93

para os comprimentos 8, 12, 16 e 24.


O captulo 6 apresentou o projeto e implementao, no dispositivo SPARTAN 3E xc3s500e5-fg320, de um algoritmo que capaz de fazer a computao rpida dos coecientes da
DFT/DHT de uma sequncia real de comprimento N = 16.

O dispositivo computa a

DFT/DHT em 65 nsec, que aceitvel para aplicaes tais como udio, processamento de
sinais biomdicos e xDSL.

7.1

A Transformada Rpida de Fourier

Os algoritmos rpidos (FFT) propostos na literatura para computar a transformada discreta de Fourier, de um modo geral, no atingem o limitante inferior de Heideman para a
complexidade multiplicativa. A FFT proposta nesta tese, baseada em uma expanso em srie
matricial de Laurent, tambm apresenta esta caracterstica. Entretanto, seu desempenho para
os comprimentos N investigados, do tipo N 4( mod 8), superior ao das melhores FFT
descritas na literatura, conforme indicado nas Tabelas de complexidade aritmtica 7.1 e 7.1
(Tabelas 4.1 e 4.3, reapresentadas aqui por convenincia).
Tabela 7.1: Complexidade multiplicativa da FFT baseada na Srie Matricial de Laurent
N

N log2 N (arredondado)

Laurent-FFT

Ganho (%)

12

43

81 %

20

86

32

63 %

28

135

72

47 %

36

186

88

53 %

44

240

200

17 %

52

296

288

3%

60

354

208

41 %

Tabela 7.2: Complexidade multiplicativa de algoritmos FFT em termos do nmero de multiplicaes


reais no triviais, para computar a DFT de uma sequncia real de comprimento N (N = 2r ): Radix-2,
Rader-Brenner, Laurent-FFT, limitante de Heideman.
N

N log2 N

Radix-2

Rader-Brenner

Heideman-Burrus

Laurent-FFT

24

16

64

12

10

10

12

32

160

88

34

16

54

64

384

264

196

84

224

94

Embora tenham sido apresentados exemplos especcos no captulo 4, para N = 12 e 20, o


procedimento sistemtico podendo ser implementado para qualquer valor de N 4(mod 8).

7.2

A transformada rpida de Hartley

Desde que foi proposta em 1984, a transformada discreta de Hartley vem sendo estudada
para que sua computao seja a mais eciente possvel. As propostas de algoritmos rpidos,
para computar a DHT, na maioria dos casos, so semelhantes aos algoritmos rpidos para
computao da DFT, com desempenho similar. A FHT proposta nesta tese sistemtica e
serve para comprimentos N 0 mod 4, e no apenas para comprimentos que so potncias
de 2. Seu desempenho, em termos de complexidade multiplicativa, mostrou-se melhor que o
dos tradicionais algoritmos base-2, base-4 e split-radix, como se pode observar na Figura 7.1
(extrada dos dados apresentados nas Tabelas 5.6 e 5.7).

Figura 7.1: Complexidade multiplicativa para os algoritmos FHT (base-2, Split-Radix e expanso
matricial) e limitante inferior de Heideman, em funo do comprimento N da transformada.

Esta nova transformada rpida de Hartley pode ser melhorada para se chegar ao limitante
mnimo de multiplicaes necessrias para sua computao. Diante desse cenrio, algoritmos
timos para computao da DHT para os comprimentos N = 8, 12, 16 e 24 foram apresentados. Estes podem ser facilmente implementados em circuitos integrados, FPGA ou DSP. A
explorao de caractersticas da funo cas(.) e a tcnica de expanso matricial desenvolvida

95

nesta tese, permitiram o desenvolvimento dos mesmos.

7.3

Sugestes para Trabalhos Futuros

Como sugestes para trabalhos futuros relativos aos temas apresentados nesta Tese, podemos indicar:

Busca de FHTs timas (aquelas que apresentam complexidade multiplicativa igual ao limitante de Heideman) para N = 12k , considerando as propriedades da funao cas( 2
N i) para
esse tipo de comprimento;

Implementao desses novos algoritmos rpidos, em um ambiente Linux, e comparao com


outras rotinas para vericao do custo de memria e processador;

Implementao desses novos algoritmos rpidos em uma plataforma paralela com as linguagens CUDA ou OpenCl, podendo ser utilizadas placas de Unidades de Processadores
Grcos (GPU, do ingls Graphics Processor Unit);

Implementao, com as novas tcnicas propostas, da transformada discreta de Fourier dos


tipos II, III e IV [118];

Implementao, com as novas tcnicas propostas, da transformada discreta de Hartley dos


tipos II, III e IV [119];

Aplicao e investigao dessas novas tcnicas em transformadas bidimensionais de Fourier


e de Hartley;

Aplicao e investigao dessas novas tcnicas em transformadas bidimensionais de Fourier


e de Hartley sobre corpos nitos;

Projeto e Implementao em FPGA para os algoritmos disponveis na literatura e comparao, com os novos algoritmos propostos, em relao rea de uso do dispositivo;

Investigao de um novo algoritmo rpido para computar a DCT e a DST, baseado em


expanses matriciais semelhantes s apresentadas nesta Tese.

Referncias
[1] J. Fourier, Thorie analytique de la chaleur. France: Acadmie des Sciences, 1822.
[2] J. P. Kahane, Le retour de Fourier, compte rendus Acadmie des Sciences, pp. 1 9,
2005.
[3] P. Diniz, E. Silva, and S. Netto, Digital Signal Processing: System Analysis and Design.
Cambridge University Press, 2010.
[4] J. W. Cooley, P. Lewis, and P. Welch, Fast Fourier transform and its applications,
IEEE Transactions on Education, vol. 12, no. 1, pp. 2834, 1969.
[5] J. G. Ables, Fourier transform photography: a new method for x-ray astronomy,
Proceedings of the Astronomical Society of Australia, vol. 1, p. 172, 1968.
[6] B. Birkfellner, Aplied Medical Image. CRC Press, 2011.
[7] F. Grandmont, L. Drissen, and G. Joncas, Development of an imaging fourier transform
spectrometer for astronomy, Proceedings of the Specialized Optical Developments in
Astronomy, vol. 4842, pp. 392401, 2003.
[8] A.-P. Bernier, F. Grandmont, J.-F. Rochon, M. Charlebois, and L. Drissen, First results
and current development of spiomm: an imaging fourier transform spectrometer for
astronomy, Proceedings of the Specialized Optical Developments in Astronomy, vol.
6269, pp. 626 949626 9499, 2006.
[9] S. A. Fulop, Speech Spectrum Analysis. Springer, 2011.
[10] M. Portno, Time-scale modication of speech based on short-time fourier analysis,
IEEE Transactions on Acoustics, Speech and Signal Processing, vol. 29, no. 3, pp. 374
390, June 1981.

96

97

[11] D. Grin and J. Lim, Signal estimation from modied short-time fourier transform,
IEEE Transactions on Acoustics, Speech and Signal Processing, vol. 32, no. 2, pp. 236
243, April 1984.
[12] K. Paliwal, J. Lyons, and K. Wojcicki, Preference for 20-40 ms window duration in
speech analysis, 2010 4th International Conference on Signal Processing and Communication Systems (ICSPCS), pp. 1 4, December 2010.
[13] A. V. Oppenheim, Speech spectrograms using the fast Fourier transform, IEEE Spectrum, vol. 7, no. 8, pp. 5762, August 1970.
[14] A. M. Kondoz, Digital Speech: Coding for Low Bit Rate Communication Systems. John
Wiley & Sons, Ltd., 2004.
[15] M. Arnold, Audio watermarking: features, applications and algorithms, 2000 IEEE
International Conference on Multimedia and Expo (ICME), vol. 2, pp. 10131016, 2000.
[16] S. Pfeier, S. Fischer, and W. Eelsberg, Automatic audio content analysis, Proceedings of the fourth ACM international conference on Multimedia, pp. 2130, 1996.
[17] A. Ramalingam and S. Krishnan, Gaussian mixture modeling of short-time fourier
transform features for audio ngerprinting, IEEE Transactions on Information Forensics and Security, vol. 1, no. 4, pp. 457 463, December 2006.
[18] R. C. Gonzalez and R. E. Woods, Processamento Digital de Imagens. Pearson, 2010.
[19] I. Uzun, A. Amira, and A. Bouridane, FPGA implementations of fast fourier transforms
for real-time signal and image processing, IEE Proceedings on Vision, Image and Signal
Processing, vol. 152, no. 3, pp. 283 296, June 2005.
[20] B. Reddy and B. Chatterji, An t-based technique for translation, rotation, and scaleinvariant image registration, IEEE Transactions on Image Processing, vol. 5, no. 8, pp.
1266 1271, August 1996.
[21] I. Reed, T. Truong, Y. Kwoh, and E. Hall, Image processing by transforms over a nite
eld, IEEE Transactions on Computers, vol. C-26, no. 9, pp. 874881, September 1977.
[22] J. L. Massey, The discrete Fourier transform in coding and cryptography, IEEE Information Theory Workshop, February 1998.

98

[23] R. M. Campello de Souza, E. S. V. Freire, and H. M. Oliveira, Fourier codes, Proceedings of the International Symposium on Communications Theory and Applications
(ISCTA), vol. 1, pp. 370 375, August 2009.
[24] A. Poljicak, L. Mandic, and D. Agic, discrete Fourier transform-based watermarking
method with optimal implementation radius, J. Eletron. Imaging, vol. 20, 033008,
August 2011.
[25] I. Kitamura, S. Kanai, and T. Kishinami, Copyright protection of vector map using
digital watermarking method based on discrete fourier transform, 2001 IEEE International Geoscience and Remote Sensing Symposium (IGARSS), vol. 3, pp. 1191 1193,
2001.
[26] T. A. Wysocki, B. Honary, and B. J. Wysocki, Signal Processing for Telecommunications
and Multimedia. Springer, 2005.
[27] R. N. Bracewell, The Fourier transform, Scientic American, vol. 260, pp. 8289,
1989.
[28] E. O. Brigham, The fast Fourier transform and its applications. Prentice-Hall, 1988.
[29] R. E. Blahut, Fast Algorithms for Signal Processing. Cambridge University Press, 2010.
[30] G. Goertzel, An algorithm for the evaluation of nite trigonometric series, American
Mathematics Monthly, vol. 65, pp. 34 35, 1958.
[31] I. J. Good, The interaction algorithm and practical Fourier analysis, Journal of the
Royal Statistical Society, vol. B20, pp. 361 372, 1958.
[32] L. H. Thomas, Using a computer to solve problems in physics, Applications of Digital
Computers, pp. 44 45, 1963.
[33] I. J. Good, The relationship between two fast Fourier transforms, IEEE Transactions
on Computers, vol. C-20, pp. 310 317, 1971.
[34] J. W. Cooley and J. W. Tukey, An algorithm for the machine calculation of complex
Fourier series, Mathematics of Computation, vol. 19, no. 90, pp. 297301, 1965.
[35] M. Heideman, D. Johnson, and C. Burrus, Gauss and the history of the fast Fourier
transform, IEEE ASSP Magazine, vol. 1, pp. 1421, 1984.

99

[36] J. Cooley, P. Lewis, and P. Welch, Historical notes on the fast Fourier transform,
Proceedings of the IEEE, vol. 55, pp. 1675 1677, 1967.
[37] B. Cipra, The Best of the 20th Century: Editors Name Top 10 Algorithms, SIAM
News, vol. 33, no. 4, May 2000.
[38] W. T. Cochran, J. W. Cooley, D. L. Favin, H. D. Helms, R. A. Kaenel, W. W. Lang,
G. C. Maling, D. E. Nelson, C. M. Rader, and P. D. Welch, What is the fast Fourier
transform? Proceedings of The IEEE, vol. 55, pp. 16641674, 1967.
[39] R. C. Singleton, On computing the fast Fourier transform, Communications of The
ACM, vol. 10, no. 10, pp. 647654, 1967.
[40] C. Rader, Discrete Fourier transforms when the number of data samples is prime,
Proceedings of the IEEE, vol. 56, pp. 1107 1108, 1968.
[41] L. Bluestein, A linear ltering approach to the computation of discrete Fourier transform, IEEE Transactions on Audio and Electroacoustics, vol. 18, pp. 451 455, 1970.
[42] G. Bergland, A radix-eight fast Fourier transform subroutine for real-valued series,
Transactions on Audio and Electroacoustics, vol. 17, pp. 138144, 1969.
[43] D. Takahashi, A radix-16 FFT algorithm suitable for multiply-add instruction based
on goedecker method, Proceedings of the 2003 International Conference on Multimedia
and Expo (ICME), vol. 2, pp. 845848, 2003.
[44] R. C. Singleton, An algorithm for computing the mixed radix fast Fourier transform,
Transactions on Audio and Electroacoustics, vol. 17, pp. 93103, 1969.
[45] J. M. Pollard, The fast Fourier transform in a nite eld, Mathematics of Computation,
vol. 25, pp. 365 374, 1971.
[46] C. Rader and N. Brenner, A new principle for fast Fourier transformation, IEEE
Transactions on Acoustics, Speech, and Signal Processing, vol. 24, pp. 264266, 1976.
[47] S. Winograd, On computing the discrete Fourier transform, Proc. Nat. Acad. Sci.
Mathematics, vol. 73, pp. 10051006, 1976.
[48] , On computing the discrete Fourier transform, Mathematics of Computation,
vol. 32, pp. 175 199, 1978.

100

[49] P. Duhamel and H. Hollman, Split-radix FFT algorithm, Electronics Letters, vol. 20,
pp. 1416, 1984.
[50] H. Sorensen, C. Burrus, and D. Jones, A new ecient algorithm for computing a few
DFT points, IEEE International Symposium on Circuits and Systems, vol. 2, pp. 1915
1918, 1988.
[51] D. Takahashi, An extended split-radix FFT algorithm, IEEE Signal Processing Letters,
vol. 8, pp. 145147, 2001.
[52] S. G. Johnson and M. Frigo, A modied split-radix FFT with fewer arithmetic operations, IEEE Transactions on Signal Processing, vol. 55, pp. 111119, 2007.
[53] M. T. Heideman, Multiplicative complexity, convolution, and the DFT. Springer-Verlag,
Inc., 1988.
[54] D. W. Tufts and G. Sadasiv, The arithmetic Fourier transform, IEEE Acoustic Speech,
Signal Processing Magazine, vol. 5, pp. 13 17, 1988.
[55] A. J. A. Paschoal, A Transformada Aritmtica de Fourier, Dissertao de Mestrado,
Programa de Ps-Graduao em Engenharia Eltrica, UFPE, 1993.
[56] R. J. S. Cintra and H. M. de Oliveira, How to interpolate in arithmetic transform algorithms, 2002 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. IV, pp. 4169 4169, May 2002.
[57] , A short survey on arithmetic transforms and the arithmetic Hartley transform,
Journal of the Brazilian Telecommunications Society, vol. 19, pp. 6879, August 2004.
[58] A. Varkonyi-Koczy, A recursive fast Fourier transformation algorithm, IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing, vol. 42, pp.
614616, 1995.
[59] P. Marti-Puig, Two families of radix-2 FFT algorithms with ordered input and output
data, Signal Processing Letters, vol. 16, pp. 6568, 2007.
[60] G. J. Silva Jr. and R. M. Campello de Souza, Teoria da complexidade aditiva para
transformadas, Anais do XXIX Simpsio Brasileiro de Telecomunicaes, outubro 2011.

101

[61] , Transformada rpida de Fourier otimizada, Anais do XXIX Simpsio Brasileiro


de Telecomunicaes, outubro 2011.
[62] G. J. d. Silva Jr. and R. M. Campello de Souza, Minimum multiplicative complexity
algorithm for computing a single component of the discrete fourier transform, Digital
Signal Processing, vol. 23, no. 3, pp. 1040 1043, 2013.
[63] C. Burrus, An in-place, in-order prime factor FFT algorithm, IEEE Transactions on
Acoustics, Speech and Signal Processing, vol. ASSP-29, pp. 806817, 1981.
[64] V. H. Sorensen, D. L. Jones, M. T. Heideman, and C. S. Burrus, Real-valued fast
Fourier transform algorithms, IEEE Transactions on acoustics, speech, and signal processing, vol. ASSP-35, pp. 849863, 1987.
[65] S. Bouguezel, M. O. Ahmad, and M. N. S. Swamy, A new radix-2/8 FFT algorithm
for length-q 2m DFTs, IEEE Transactions on circuits and systems-I: Regular Papers,
vol. 51, pp. 17231732, 2004.
[66] P. Duhamel and M. Vetterli, Fast Fourier transforms: a tutorial review and a state of
the art, Signal Processing, vol. 19, pp. 259299, April 1990.
[67] R. V. L. Hartley, A more symmetrical Fourier analysis applied to transmission problems, Proceedings of the IRE, vol. 30, no. 3, pp. 144150, March 1942.
[68] C. Paik, G. Cote, J. DePonte, and M. Fox, Fast Hartley transforms for spectral analysis
of ultrasound doppler signals, IEEE Transactions on Biomedical Engineering, vol. 35,
no. 10, pp. 885 888, October 1988.
[69] C. Paik and M. Fox, Fast Hartley transforms for image processing, IEEE Transactions
on Medical Imaging, vol. 7, no. 2, pp. 149 153, June 1988.
[70] , Comparison of Hartley and cas-cas transforms in medical image compression,
Proceedings of the 1989 Fifteenth Annual Northeast Bioengineering Conference, pp. 127
128, March 1989.
[71] M. Fox, Real time frequency domain processing of medical images, Proceedings of
the 1988 Fourteenth Annual Northeast Bioengineering Conference, pp. 285 286, March
1988.

102

[72] H. Kuhl, M. D. Sacchi, and J. Fertig, The Hartley transform in seismic imaging,
Society of Exploration Geophysicists - Geophysics, vol. 66, pp. 1251 1257, 2001.
[73] L. Chen and D. Zhao, Optical image encryption with Hartley transforms, Optical
society of America - Optical letters, vol. 31, pp. 3438 3440, 2006.
[74] P. J. Paul and P. N. Girija, A novel VLSI architecture for image compression, Proceedings of the eighth IEEE International Symposium on Multimedia (ISM), pp. 794795,
2006.
[75] J. Fabrega, M. Moreolo, and G. Junyent, Constant envelope coherent optical ofdm
based on fast Hartley transform, 2011 13th International Conference on Transparent
Optical Networks (ICTON), pp. 1 4, June 2011.
[76] J. Villasenor, Optical Hartley transforms, Proceedings of the IEEE, vol. 82, no. 3, pp.
391 399, March 1994.
[77] R. Muralishankar, L. Kaushik, and A. Ramakrishnan, Time-scaling of speech and music
using independent subspace analysis, 2004 International Conference on Signal Processing and Communications (SPCOM), pp. 310 314, December 2004.
[78] E. Chilton, The Hartley transform applied to speech coding, IEE Colloquium on Speech
Coding, pp. 9/1 9/6, October 1989.
[79] R. Chen, Z. E, M. Asharif, and K. Yamashita, Adaptive lter by using Hartley transform extended correlation LMS algorithm in the double-talk condition, 3rd International Conference on Innovative Computing Information and Control (ICICIC), p. 394,
June 2008.
[80] Z. Sembiring, M. Malek, and H. Rahim, Low complexity OFDM modulator and demodulator based on discrete Hartley transform, 2011 Fifth Asia Modelling Symposium
(AMS), pp. 252 256, May 2011.
[81] Z. Sembiring and M. Syahruddin, Performance analysis of discrete Hartley transform
based OFDM modulator and demodulator, 2012 Third International Conference on
Intelligent Systems, Modelling and Simulation (ISMS), pp. 674 679, February 2012.
[82] R. Bracewell, Assessing the Hartley transform, IEEE Transactions on Acoustics,
Speech and Signal Processing, vol. 38, no. 12, pp. 2174 2176, December 1990.

103

[83] R. N. Bracewell, Discrete Hartley transform, J. Opt. Soc. Am., vol. 73, pp. 18321835,
1983.
[84] , The fast Hartley transform, Proceedings of The IEEE, vol. 72, pp. 10101018,
1984.
[85] H. Sorensen, D. Jones, C. Burrus, and M. Heideman, On computing the discrete Hartley
transform, IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 33, pp.
12311238, 1985.
[86] D. Yang, Prime factor fast hartley transform, Electronics Letters, vol. 26, no. 2, pp.
119 121, January 1990.
[87] D.-K. Lun and W.-C. Siu, Fast radix-3/9 discrete Hartley transform, IEEE Transactions on Signal Processing, vol. 41, no. 7, pp. 2494 2499, July 1993.
[88] G. Bi, A split radix algorithm of discrete Hartley transform, Proceedings of the 1994
Second Australian and New Zealand Conference on Intelligent Information Systems, pp.
165 168, December 1994.
[89] R. M. Campello de Souza, H. M. de Oliveira, and A. N. Kauman, The Hartley transform in a nite eld, Proceedings of the SBT/IEEE International Telecommunications
Symposium(ITS), vol. 1, pp. 245 250, August 1998.
[90] G. Bi and Y. Q. Chen, Fast DHT algorithms for length n=q*2m, IEEE Transactions
on Signal Processing, vol. 47, no. 3, pp. 900 903, March 1999.
[91] H. M. de Oliveira, R. J. S. Cintra, and R. M. Campello de Souza, Multilevel Hadamard
decomposition of discrete Hartley transforms, Anais do XVIII Simpsio Brasileiro de
Telecomunicaes, Setembro 2000.
[92] R. J. S. Cintra, H. M. de Oliveira, and C. O. Cintra, The rounded Hartley transform,
Proceedings IEEE/SBrT International Telecommunications Symposium (ITS), pp. 455
460, 2002.
[93] S. Bouguezel, M. Ahmad, and M. Swamy, An approach for computing the radix-2/4 DIT
FHT and FFT algorithms using a unied structure, IEEE International Symposium on
Circuits and Systems (ISCAS), vol. 1, pp. 836 839, May 2005.

104

[94] G. Shah and T. Rathore, A new fast radix-2 decimation-in-frequency algorithm for
computing the discrete Hartley transform, First International Conference on Computational Intelligence, Communication Systems and Networks, pp. 363 368, July 2009.
[95] M. Hamood and S. Boussakta, New radix-based FHT algorithm for computing the
discrete Hartley transform, 2011 IEEE International Conference on Acoustics, Speech
and Signal Processing (ICASSP), pp. 1581 1584, May 2011.
[96] G. Bergland, Fast Fourier transform hardware implementations an overview, IEEE
Trans. on Audio and Electroacoustics, vol. 17, no. 2, pp. 104108, 1969.
[97] H. Miyanaga and H. Yamauchi, A 400 mops FFT processor vlsi architecture, IEICE
TRANSACTIONS on Electronics, vol. E74-C, no. 11, pp. 38453851, 1991.
[98] W. F. Yen, S. D. You, and Y. C. Chang, Real-time FFT with pre-calculation, Computers and Electrical Engineering, vol. 35, pp. 435440, May 2009.
[99] A. Edelman, P. McCorquodale, and S. Toledo, The future fast Fourier transform?
SIAM J. Sci. Comput., vol. 20, pp. 10941114, January 1999.
[100] A. Papoulis, The Fourier Integral and Its Applications. McGraw-Hill, 1962.
[101] A. V. Oppenheim and R. W. Schafer, Discrete-Time Signal Processing, 3rd ed. Pearson,
2010.
[102] K. J. Olejniczak and G. T. Heydt, Special section on the Hartley transform, Proceedings of the IEEE, vol. 82, pp. 372447, March 1994.
[103] E. O. Brigham and R. E. Morrow, The fast Fourier transform, IEEE Spectrum, vol. 4,
pp. 6370, 1967.
[104] A. M. Despain, Very fast Fourier transform algorithms hardware for implementation,
IEEE Transactions on Computers, vol. C28, no. 5, pp. 333341, 1979.
[105] H. M. d. Oliveira and R. M. Campello de Souza, A fast algorithm for computing the
Hartley/Fourier spectrum, Anais da Academia Brasileira de Cincias, vol. 73, no. 9,
pp. 468 468, September 2001.
[106] D. M. Burton, Elementary number theory, 7th ed. McGraw-Hill, 2010.

105

[107] R. J. McEliece, Finite Fields for Computer Scientists and Engineers. Kluwer Academic
Publishers, 1987.
[108] G. vila, Variveis Complexas e Aplicaes. LTC, 2000.
[109] K. Adel-Ghaar, Long division from Laurent series matrices and the optimal assignment
problem, Linear Algebra and its Application, vol. 280, pp. 189197, September 1998.
[110] H. L. Resniko and R. Wells, Wavelet Analysis: the Scalable structure of Information.
SpringerVerlag, 1998.
[111] P. Diniz, E. Silva, and S. Netto, Digital signal processing: system analysis and design.
Cambridge University Press, 2002.
[112] H. M. de Oliveira, V. L. Sousa, H. A. N. Silva, and R. M. Campello de Souza, Radix-2
fast Hartley transform revisited, I Congresso de Informtica da Amaznia, vol. 1, pp.
285292, April 2001.
[113] M. T. Heideman and C. S. Burrus, On the number of multiplications necessary to compute a length-2n DFT, IEEE transactions on acoustics, speech, and signal processing,
vol. 34, pp. 9195, April 1986.
[114] H. M. de Oliveira, Anlise de Sinais para Engenheiros:

Uma abordagem via

WAVELETS. Srie da Sociedade Brasileira de Telecomunicaes, Brasport, 2007.


[115] J. G. Liu, F. H. Y. Chan, F. K. Lam, H. F. Li, and G. S. K. Fung, Moment-based fast
discrete Hartley transform, Signal Processing, vol. 83, pp. 17491757, August 2003.
[116] R. Woods, J. McAllister, G. Lightbody, and Y. Yi, FPGA-based implementation of
complex signal processing system. John Wiley & Sons, 2008.
[117] D. Chen, J. Cong, and P. Pan, FPGA design automation: a survey.

Now Publishers,

2006.
[118] V. Britanak and K. Rao, The fast generalized discrete Fourier transforms: A unied
approach to the discrete sinusoidal transforms computation, Signal Processing, vol. 79,
pp. 135 150, 1999.
[119] N. Hu, H. Chang, and O. K. Ersoy, Generalized discrete Hartley transforms, IEEE
Transaction on Signal Processing, vol. 40, pp. 2931 2940, 1992.

apndice

Fatorando uma Matriz


A(n n) em Matrizes
Bielementares

A.1

Introduo

Denio A.1 Uma matriz bielementar uma matriz, com elementos racionais, em que
cada uma das suas linhas tem, no mximo, dois elementos no nulos; alm disso, as linhas
com dois elementos no nulos, consideradas como vetores no RN , devem apresentar direes
distintas.
Denio A.2 A distncia de Hamming entre dois vetores x e y o nmero de posies em
que as componentes de cada vetor so diferentes e denotada por d(x, y).
Denio A.3 O peso de Hamming de um vetor x = (x0 , ..., xn1 ) o nmero de componentes no nulas de x e denotado por w(x).
Exemplo A.1
Considerando x, y GF (2), com x = (1101) e y = (1100), tem-se w(x) = 3, w(y) = 2 e

d(x, y) = 1.

107

A.2

Procedimento para Fatorao da Matriz

O procedimento para fatorao de uma Matriz A(nn) em matrizes bielementares consiste


em:
1. Escolher o par de colunas que apresenta a menor distncia de Hamming dentre todos os
pares de colunas de A. Caso mais de um par atenda condio escolher aleatoriamente
um tal par;
2. Iniciar a construo de uma matriz B(n n) a partir do par de colunas escolhido em
(1), escrevendo apenas as linhas distintas do par e preenchendo com 0 (zeros) as demais
posies destas linhas;
3. Preencher as linhas restantes com 0 (zeros) e um nico 1 (um), colocado na primeira linha
disponvel na posio j (coluna) correspondente coluna com maior peso de Hamming
em A. Caso haja mais de uma coluna com tal peso, escolher aleatoriamente uma tal
coluna. Repetir para as demais linhas; neste passo as colunas escolhidas no passo 1 no
so consideradas.
4. Econtrar a matriz C tal que A = CB ;
5. Vericar se a matriz C bielementar. Caso positivo, a fatorao est terminada. Caso
contrrio, repetir o procedimento a partir de (1).
Exemplo A.2
Deseja-se computar V = Av em que

V0



V1

V =
=
V2

V3

v0


1 0
0 1 v1

= Av.


1 0 1 1 v2


v3
1 1 1
1

A matriz A apresenta 9 operaes de adies, porm fazendo uma inspeo visual nota-se
que existem adies repetidas. Vamos aplicar o procedimento descrito anteriormente para
eliminarmos estas repeties.
No primeiro passo, deve-se escolher o par de colunas que tem menor distncia de Hamming.
O par que satisfaz esta condio formado pelas colunas 0 e 3. A partir destas colunas,
constri-se a matriz B , conforme o passo 2, ou seja, escolhe-se as linhas distintas do par e

108

preenche-se todas as outras posies com zero; para as linhas restantes, inicia-se preenchendo
com um nico 1, na coluna de maior peso de Hamming; ento segue-se a ordem decrescente
de peso de Hamming at a ltima coluna. Neste exemplo, primeiro a coluna 2 e em seguida
a coluna 1. Observa-se que a matriz B obtida bielementar,

1 0 0

1 0 0 1

.
B=

0 0 1 0

0 1 0 0
No passo 4, encontra-se a matriz C , tal que, A = CB . O resultado

1 0

0 1 0
0
.

C=

1 0 1 0

1 0 1 1
Analisando a matriz C desta primeira fatorao (passo (5)) percebe-se que a mesma no
bielementar; salienta-se que o procedimento s se encerrar quando todas as matrizes forem
bielementares e, como C no satisfaz esta condio, volta-se ao passo (1). Para iniciar novamente o procedimento, faz-se A = C ,

1 0

0 1 0
0
.

A=

1 0 1 0

1 0 1 1
Aplicando o passo (1), escolhemos as colunas 0 e 2 da nova matriz A para formao da
matriz B ; em seguida efetuamos os passos (2) e (3) obtendo a matriz B ,

109

1 0

1 0 1 0
.
B=

0 1 0 0

0 0 0 1
No prximo passo (4), deve-se encontrar a matriz C que satisfaa condio de fatorao
A = CB . A matriz C

1 0 0

0 0 1 0

.
C=

0 1 0 0

1 0 0 1
Analisando esta nova matriz C , a mesma satisfaz a condio de matriz bielementar, portanto a fatorao est terminada. O processo gerou a seguinte fatorao

1 0 0

1 0

1 0 0

0 0 1 0 1 0 1 0 1 0 0 1
.


A=

0 1 0 0 0 1 0 0 0 0 1 0

0 1 0 0
0 0 0 1
1 0 0 1
Fazendo a contagem das operaes necessrias aps a fatorao, chegamos a 6 adies, ou
seja, houve uma reduo de 33, 3% em relao matriz original. A gura A.1 mostra uma
implementao da fatorao.

Figura A.1: Esquema para a computao aditiva referente matriz do exemplo A.2. Um possvel
vetor de entrada (v) e um vetor de sada (V ) ilustram o comportamento da implementao.

apndice

Artigos Publicados

Abaixo esto relacionados os artigos publicados decorrentes desta tese.


1. R. C. Oliveira, R. M. Campello de Souza, H. M. de Oliveira, Matrix expansions for
computing the Discrete Hartley Transform for blocklength N=0 (mod 4), 4th IEEE
Latin-American Conference on Communications Communications (LATINCOM), vol.
1, pp 1-6, 2012.
2. R. C. Oliveira, R. M. Campello de Souza, H. M. de Oliveira, E. J. P. Santos, A Flexible
Implementation of a Matrix Laurent Series-based 16-Point Fast Fourier and Hartley
Transforms, Proceedings of the VI Southern Conference on Programmable Logic, vol.
1, pp 175-178, 2010.
3. R. C. Oliveira, R. M. Campello de Souza, H. M. de Oliveira, Matrix Expansions for
Computing the Discrete Hartley Transform, Proceedings of the 2010 IEEE/SBrT International Telecommunication Symposium (ITS), vol. 1, 2010.
4. H. M. de Oliveira, R. M. Campello de Souza, R. C. Oliveira,A Matrix Laurent Seriesbased Fast Fourier Transform for Blocklengths N=4 (mod 8), Anais do XXVII Simpsio
Brasileiro de Telecomunicaes (SBrT), vol. 1, pp 1-6, 2009.

Você também pode gostar