• Nenhum resultado encontrado

Complexidade Computacional da DFT. FFT Realização Eficiente da DFT. Decomposição da DFT Decimação no Tempo. DFT de N/2 pontos.

N/A
N/A
Protected

Academic year: 2021

Share "Complexidade Computacional da DFT. FFT Realização Eficiente da DFT. Decomposição da DFT Decimação no Tempo. DFT de N/2 pontos."

Copied!
9
0
0

Texto

(1)

FFT – Realizac¸ ˜ao Eficiente da DFT

Lu´ıs Caldas de Oliveira

1. Algoritmos de Decimac¸ ˜ao no Tempo

2. Algoritmos de Decimac¸ ˜ao na Frequ ˆencia

3. Realizac¸ ˜ao dos Algoritmos FFT

4. Algoritmos para N Factoriz ´avel

5. Realizac¸ ˜ao da DFT Usando a Convoluc¸ ˜ao

Complexidade Computacional da DFT

Medida de complexidade computacional utilizada: n ´umero de multiplicac¸ ˜oes e so-mas.                         

multiplicac¸ ˜oes complexas;

      somas complexas;  aproximadamente  

operac¸ ˜oes complexas;

 aproximadamente

!





operac¸ ˜oes reais;

 requer

 registos complexos.

Lu´ıs Caldas de Oliveira 2

Decimac¸ ˜ao no Tempo

      "      #            n par $$$ % n ´ımpar $$$      &  '        (   & %   #       &  ' %         (    )    %   #   *    )    e *    t ˆem per´ıodo  + .

Decomposic¸ ˜ao da DFT

3 2 1 −j2π N e = k k X(0) X(1) X(2) X(3) X(4) X(5) x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) X(7) X(6) 0 4 5 6 7 G(0) H(0) H(3) H(2) H(1) G(3) G(2) G(1)

DFT de N/2 pontos

DFT de N/2 pontos

O n ´umero de multiplicac¸ ˜oes complexas diminui para

%     

(2)

Decomposic¸ ˜ao da DFT

0 2 4 6 0 2 4 6 3 2 1 −j2Nπ e X(0) X(1) X(2) X(3) X(4) X(5) x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) X(7) X(6) = 0 4 5 6 7 k k DFT de N/4 DFT de N/4 DFT de N/4 DFT de N/4

O n ´umero de multiplicac¸ ˜oes complexas diminui para

%  %     

Lu´ıs Caldas de Oliveira 5

DFT de 2 Pontos

A decomposic¸ ˜ao da DFT prossegue at ´e se chegar a DFTs de 2 pontos:

x(0)

X(0)

X(1)

x(1)

1

−1

No total o n ´umero de multiplicac¸ ˜oes complexas da FFT ´e de 

 



Lu´ıs Caldas de Oliveira 6

FFT

0 4 0 4 0 4 0 2 4 6 0 2 4 6 3 2 1 X(0) X(1) X(2) X(3) X(4) X(5) x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) X(7) X(6) = k 0 4 0 4 5 6 7 k −j2π e 8

Reduc¸ ˜ao Adicional dos C ´alculos

Cada borboleta tem a forma geral:

−j r2π N e 2π N e −j (r + )N 2 X (q) X (q) m m−1 m−1 m X (q) X (q)        &               &        & −j r2π N e X (q) m m−1 m−1 m X (q) −1 1 X (p) X (p)

O n ´umero de multiplicac¸ ˜oes reduz-se para



  

(3)

FFT de 8 Pontos com Decimac¸ ˜ao no Tempo

2 2 2 3 0 0 1 0 X(0) X(1) X(2) X(3) X(4) X(5) x(0) x(4) x(2) x(6) x(1) x(5) x(3) x(7) X(7) X(6) = k −j k 2π e 8 1 −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 1 1 1 1 1 1 1 1 1 1 1

Lu´ıs Caldas de Oliveira 9

Realizac¸ ˜ao In-Place

Utiliza-se um conjunto de registos complexos. Os registos s ˜ao inicializados com

as amostras temporais re-ordenadas:

               ...

Os registos s ˜ao actualizados pela seguinte recurs ˜ao:

           %      &                     &     

Lu´ıs Caldas de Oliveira 10

Ordenac¸ ˜ao Bit-Reversed

O re-ordenamento da sequ ˆencia de entrada da FFT com decimac¸ ˜ao no tempo ´e realizada na ordem:                                                                                                                                                                              

Decimac¸ ˜ao na Frequ ˆencia - Amostras Pares

            #           Amostras pares:  '     "           &         %   %         (  &               (  &

(4)

Decimac¸ ˜ao na Frequ ˆencia - Amostras ´Impares

            #           Amostras ´ımpares:  ' %                 &               %               (                       ( 

Lu´ıs Caldas de Oliveira 13

Decomposic¸ ˜ao da DFT por Decimac¸ ˜ao na Frequ ˆencia

0 1 2 3 X(0) X(2) x(0) x(2) x(5) x(7) X(7) = k −j k 2π e 8 −1 −1 −1 −1 x(1) x(3) x(4) x(6) X(4) X(6) X(1) X(5) X(3) g(1) g(2) g(3) h(0) h(1) h(2) h(3) g(0) DFT de N/2 pontos DFT de N/2 pontos

Lu´ıs Caldas de Oliveira 14

FFT de 8 Pontos com Decimac¸ ˜ao na Frequ ˆencia

0 1 2 3 0 0 2 2 X(0) X(2) x(0) x(2) x(5) x(7) X(7) k −j2π −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 −1 x(1) x(3) x(4) x(6) X(4) X(6) X(1) X(5) X(3)

Realizac¸ ˜ao In-Place

−j r2π N

e

−1 1 X (q) m m−1 m−1 m X (q) X (p) X (p)          %                       #   &

(5)

FFT Inversa

A realizac¸ ˜ao directa da FFT pode ser usada para calcular a DFT inversa de uma sequ ˆencia.

Sendo 



 a DFT de uma sequ ˆencia X(k):

               

Pode-se obter a transformada inversa de X(k) por:

                                                

Lu´ıs Caldas de Oliveira 17

FFT de Sequ ˆencias Reais

Pode-se calcular a DFT de N pontos de uma sequ ˆencia real





 usando uma FFT

de

+ pontos:

1. Formar uma sequ ˆencia 

            , para       2. Calcular    a FFT de    pontos de   3. Determinar (       ):                                                                               4. Finalmente:                                                  

no caso contr ´ario

Lu´ıs Caldas de Oliveira 18

Realizac¸ ˜ao da FFT na Linguagem C

 A linguagem C n ˜ao disp ˜oe nem de estruturas de dados nem de operadores

aritm ´eticos para n ´umeros complexos.

 A realizac¸ ˜ao apresentada tem fins did ´acticos:

– o algoritmo foi dividido em func¸ ˜oes para melhor legibilidade;

– n ˜ao se utilizam tabelas com valores pr ´e-calculados.

A realizac¸ ˜ao poderia ser mais eficiente expandindo as func¸ ˜oes e pr ´e-calculando os factores multiplicativos.

N ´

umeros Complexos

Definic¸ ˜ao das func¸ ˜oes matem ´aticas e da estrutura de dados para armazenamento de n ´umeros complexos: #include <math.h> struct Complex { double re; double im; };

(6)

Operac¸ ˜

oes B ´asicas com N ´

umeros Complexos

struct Complex Csoma(struct Complex z1, struct Complex z2) { z1.re += z2.re;

z1.im += z2.im; return z1; }

struct Complex Csub(struct Complex z1, struct Complex z2) { z1.re -= z2.re;

z1.im -= z2.im; return z1; }

struct Complex Cmul(struct Complex z1, struct Complex z2) { struct Complex z3;

z3.re = z1.re * z2.re - z1.im * z2.im; z3.im = z1.re * z2.im + z1.im * z2.re; return z3;

}

Lu´ıs Caldas de Oliveira 21

Realizac¸ ˜ao da Re-ordenac¸ ˜ao

void Ctroca(struct Complex *z1, struct Complex *z2) { struct Complex tmp; tmp = *z1; *z1 = *z2; *z2 = tmp; } /* re-ordenacao da entrada */

void reord(int N, struct Complex X[]) { int dir, inv, pot2;

inv = 0;

for (dir = 1; dir < N; dir++) {

/* incrementa contador de ordem inversa dos bits */ for (pot2 = N/2; pot2 <= inv; pot2 /= 2)

inv -= pot2; inv += pot2; if (dir < inv) Ctroca(&X[dir], &X[inv]); } }

Lu´ıs Caldas de Oliveira 22

C ´alculos dos Factores Multiplicativos

static int Log2N;

static struct Complex Wr[20];

/* Calcula a tabela de factores multiplicativos */ void factores(int N) {

double arg = 1.5707963; /* pi/2 */ int m; Log2N = (int)(log(N+.1)/log(2.)); Wr[0].re = 1; Wr[0].im = 0; Wr[1].re = 0; Wr[1].im = -1; for (m = 2; m < Log2N; m++) { arg /= 2.;

Wr[m].re = (double) cos(arg); Wr[m].im = (double) -sin(arg); }

}

Realizac¸ ˜ao das DFTs de 2 Pontos

m m−1 m−1 m −1 1 1 X (p+1) X (p+1) X (p) X (p)

/* primeiro passo (m=1): DFTs de 2 pontos */ void dft2(int N, struct Complex X[]) {

int p = 0; struct Complex tmp; /* q = p + 1 * Xm(p) = Xm-1(p) + Xm-1(q) * Xm(q) = Xm-1(p) - Xm-1(q) */ for (p = 0; p < N; p+=2) { tmp = X[p+1]; X[p+1] = Csub( X[p], tmp ); X[p] = Csoma( X[p], tmp ); } }

(7)

Realizac¸ ˜ao das Borboletas

−j r2Nπ e X (q) m m−1 m−1 m X (q) −1 1 X (p) X (p) /* borboletas de m=2 a log2(N) */

void borbol(int N, struct Complex X[]) { struct Complex tmp, Wm;

int m, j, p, potm2 = 2, potm22 = 4;

for (m = 2; m <= Log2N; m++) { Wm = Wr[0];

for (j = 0; j < potm2; j++) { /* potm2 = 2ˆ(m-1) */ for (p = j; p < N; p += potm22) { /* potm2 = 2ˆm */

tmp = Cmul( X[p+potm2], Wm ); X[p+potm2] = Csub( X[p], tmp ); X[p] = Csoma( X[p], tmp ); } Wm = Cmul( Wm, Wr[m-1] ); } potm2 = potm22; potm22 *= 2; } }

Lu´ıs Caldas de Oliveira 25

Realizac¸ ˜ao da FFT

/* algoritmo fft de N pontos com decimacao no tempo */ void fft(int N, struct Complex X[]) {

static int Nanterior = 0;

reord(N, X); if (N != Nanterior) { Nanterior = N; factores(N); } dft2(N, X); borbol(N, X); }

Lu´ıs Caldas de Oliveira 26

Algoritmos Cooley-Tukey (N Factoriz ´avel)

     

Conceito de mapas de ´ındices

      %                           %                        

 e tomam todos os valores entre 0 e



 sem repetic¸ ˜oes.

Decomposic¸ ˜ao da DFT

      %                  %      #                  %            )                   )        )                )                %          

(8)

Casos Particulares

      %       %    

Decimac¸ ˜ao no tempo:

    +   

Decimac¸ ˜ao na frequ ˆencia:

       +

Lu´ıs Caldas de Oliveira 29

Caso Geral

      $$ $ Algoritmos de base :  

Se a entrada estiver ordenada normalmente a sa´ıda ficar ´a ordenada pela

in-vers ˜ao dos d´ıgitos do ´ındice na base .

Exemplo:           % $ $$ %    %      %   % $ $ $ %   

Algoritmos mistos: A decomposic¸ ˜ao ´e efectuada em factores diferentes.

Lu´ıs Caldas de Oliveira 30

Algoritmo da Transformada Chirp (CTA)

O algoritmo CTA permite determinar qualquer conjunto de amostras da FT

equi-espac¸adas no c´ırculo unit ´ario.

    %                                  

Este algoritmo pode ser realizado usando a convoluc¸ ˜ao:

                     

Diagrama da CTA

x(n) h(n) y(n) m (n) g(n) m (n) 1 2                                        

 caso contr ´ario

                  

  ´e n ˜ao causal e tem comprimento

 



(9)

Vantagens da CTA

 n ˜ao ´e necess ´ario que



 ;

 e

 n ˜ao precisam de ser factoriz ´aveis;





´e arbitr ´ario.

Lu´ıs Caldas de Oliveira 33

Realizac¸ ˜ao Causal

x(n) h(n) y(n) m (n) g(n) m (n) 1 2                                         %  

 caso contr ´ario

                         %    

Lu´ıs Caldas de Oliveira 34

C ´alculo da DFT Usando a CTA

   e     Neste caso: x(n) h(n) y(n) m (n) g(n) m (n) 1 2       #                       %   

 caso contr ´ario

      #             % 

Referências

Documentos relacionados

Na Figura 20 estão representados os piores tratamentos de grãos de pólen corados com solução de tetrazólio e germinação in vivo via fluorescência, na figura

Desse modo, os objetivos propostos foram alcançados e, por fim, confirmada a situação exposta na formulação do problema e da hipótese, ou seja, diante do

Como fonte de dados primários, foram realizadas visitas na Secretaria Municipal de Meio Ambiente, entrevista com uma amostra representativa da população e com os

No lugar de dividir a banda disponível em canais que seguem um padrão de reuso de freqüências o CDMA consegue atingir uma grande capacidade de usuários pela utilização de

Método: Trata-se de um estudo de corte transversal de base populacional, que utilizou informações provenientes do Inquérito de Saúde do município de Campinas/SP (IsaCAmp

A função mais importante do programa é executar o DBWS, por isso para este comando foi criado um botão para cada ambiente do DBWS disponível.. A saída do DBWS para o Shell do

A estimativa das curvas características de cada tipo de jato foi realizada em duas fases, numa primeira procedeu- se ao ajustamento de uma expressão para o decaimento da

desta em um planejamento estratégico estruturado, a dificuldade de selecionar as ferramentas de gestão apropriadas ao negócio da empresa, o uso de ferramentas inadequadas