Tradução de An Interactive Guide To The Fourier Transform – BetterExplained

A Transformada de Fourier é um dos mais profundos insights de todos os tempos. Infelizmente, o seu significado está enterrado nesta densa equação:

Xk=∑n=0N−1xn⋅e−i2πkn/N\displaystyle X_k = \sum_{n=0}^{N-1} x_n \cdot e^{-i2\pi kn / N}

xn=1N∑n=0N−1Xk⋅ei2πkn/N\displaystyle x_n = \dfrac{1}{N} \sum_{n=0}^{N-1} X_k \cdot e^{i2\pi kn / N}

Caramba! Em vez de metermos a cara nos símbolos, vamos primeiro ter contato com a sua ideia chave. Aqui vai uma metáfora em português claro:

E aqui está a versão em “português matemático” da explicação acima:

A Transformada de Fourier toma um padrão variante no tempo, mede todos os ciclos possíveis que o compõe e retorna a receita do ciclo agregado (a intensidade, o ponto inicial e a velocidade de rotação para todos os ciclos encontrados).

Então já podemos resolver algumas equações? Ainda não! Vamos botar a mão na massa e experimentar como qualquer padrão pode ser construído com ciclos [círculos girantes], utilizando algumas simulações.

Se tudo correr bem, teremos um momento Aha!, e intuitivamente perceberemos porque a Transformada de Fourier funciona. Vamos deixar os detalhes da análise matemática para depois.

Não vamos fazer uma marcha-forçada através das equações, mas sim um passeio casual que eu gostaria de ter tido quando precisei aprender essa transformada.

Em frente!

Do shake para a receita

Uma transformação matemática é uma mudança de perspectiva. Mudamos nossa noção de quantidade de “itens individuais” (linhas na areia, contagem com “palitinhos”) para “grupos de 10” (decimais) dependendo do que estamos contando. Pontuações num jogo? Agrupe-as. Multiplicações? Use decimais, por favor.

A Transformada de Fourier muda nossa perspectiva de consumidor para produtor, transformando “O que eu vejo?” em “Como foi feito?”

Em outras palavras: dado um shake, vamos encontrar a sua receita.

Por quê? Bem, as receitas são excelentes descrições para as bebidas. Você não daria a ninguém uma explicação detalhe por detalhe do que acabou de beber, mas simplesmente diria “eu tomei uma vitamina de laranja e banana”. Uma receita é mais fácil de categorizar, comparar e modificar do que o próprio objeto em si.

Portanto… dado um shake, como nós achamos a sua receita?

Shake para receita

Bem, imagine que você tenha por aí alguns filtros:

Podemos fazer a engenharia-reversa na receita filtrando cada ingrediente. O segredo?

Ver o mundo como ciclos

A Transformada de Fourier toma um ponto de vista particular: E se qualquer sinal puder ser filtrado num monte de caminhos circulares?

Uau! Esse conceito é surpreendente, mas o pobre do José Fourier teve sua ideia rejeitada a princípio. (Tem certeza, Zé? Até um padrão de “escada” pode ser criado a partir de círculos?).

E apesar de décadas de debate na comunidade matemática, é realmente esperado que os alunos internalizem essa ideia sem dificuldades. Duh. Vamos passear pela intuição.

A Transformada de Fourier encontra a receita para um sinal, como no nosso processo para o shake:

Pare. Aqui é onde a maioria dos tutoriais despejam as aplicações de engenharia na sua cara. Não se apavore; pense nesses exemplos como “Uau, finalmente vamos ver o código-fonte (DNA) por trás de ideias que, até há pouco, nos eram confusas”.

A Transformada de Fourier é útil na engenharia, claro, mas é também uma metáfora sobre como encontrar a causa-raiz por trás de um efeito observado.

Pense em círculos, não apenas em senoides

Uma das minhas grandes confusões estava na separação da definição de “senoide” e “círculo”.

Chamar um caminho circular de uma “senoide complexa” é como se referir a uma palavra como “múltiplas letras”. Você deu zoom no nível errado de detalhes. As palavras servem para representar outras coisas e não as próprias letras nas quais elas (as palavras) podem ser divididas.

A Transformada de Fourier trata de caminhos circulares (não de senoides em 1 dimensão), e a Fórmula de Euler é uma maneira inteligente de gerá-los:

Dois Caminhos, Mesmo Resultado

Temos de usar expoentes imaginários para nos mover em círculos? Não! Mas é uma forma conveniente e compacta. E, com certeza, podemos descrever nosso caminho como um movimento coordenado em duas dimensões (real e imaginária), mas não se esqueça o quadro geral: nós estamos apenas nos movendo em um círculo.

Seguindo por trajetórias circulares

Digamos que estejamos conversando ao telefone e, como de costume, eu quero que desenhemos o mesmo círculo simultaneamente. (Você prometeu!) O que eu deveria dizer?

Eu poderia dizer “raio de 2 centímetros, começando em 45 graus, 1 círculo por segundo, vai!”. Depois de meio segundo, nós devemos estar cada um apontando para: ponto de partida mais quantidade viajada = 45 + 180 = 225 graus (no círculo de 2 centímetros).

descrever um caminho circular

Toda trajetória circular precisa de um tamanho, velocidade e ângulo inicial (amplitude/frequência/fase). Podemos até combinar trajetórias: imagine minúsculos automóveis se movendo em círculos com velocidades diferentes.

A posição combinada de todos os círculos é o nosso sinal, assim como o sabor combinado de todos os ingredientes é o nosso shake.

Aqui está uma simulação de uma trajetória circular básica.

Animacao Circulo Clique para abrir a animação

(Baseado nesta animação, aqui está o código-fonte. É necessário um navegador de internet atualizado para visualizá-la. Clique no gráfico para pausar/prosseguir.)

A magnitude de cada ciclo é listada em ordem, iniciando em 0 Hz. Ciclos [0 1] significa:

A parte desafiadora agora:

Está comigo? [0 1] é um ciclo de 1 Hz puro.

Agora vamos adicionar um ciclo de 2 Hz na mistura. [0 1 1] significa “nada em 0 Hz, 1 Hz de força 1, 2 Hz de força 1”:

Circuito 2 Hz Clique para abrir a animação

Uau! Os carrinhos estão ficando selvagens: as linhas verdes são os ciclos de 1 Hz e de 2 Hz, e a linha azul é o resultado combinado. Tente alternar a caixa de seleção verde para ver o resultado claramente. O “sabor” combinado é uma oscilação que começa no máximo e desce de uma vez para o resto do intervalo.

Os pontos amarelos são quando efetivamente medimos o sinal. Com 3 ciclos definidos (0 Hz, 1 Hz, 2 Hz), cada ponto é 1/3 da trajetória do sinal. Nesse caso, ciclos [0 1 1] gera valores no tempo [2 -1 -1], quando começa no máximo (2) e desce de uma vez (-1).

Oh! Não podemos esquecer da fase, o ângulo inicial! Use magnitude:ângulo para especificar a fase. Assim [0 1:45] é um ciclo de 1 Hz que começa em 45 graus:

Círculo 45 graus Clique para abrir a animação

Essa é uma versão deslocada de [0 1]. No lado do tempo nós conseguimos [.7 -.7] em vez de [1 -1] porque nosso ciclo não está exatamente alinhado com nossos intervalos de medição, que ainda estão na metade do caminho (isso poderia ser desejado!).

A Transformada de Fourier encontra as velocidades, intensidades e fases de um conjunto de ciclos que coincidem com qualquer sinal variável no tempo.

Nosso sinal torna-se uma noção abstrata que consideramos como “observações no domínio do tempo” ou “ingredientes no domínio da frequência”.

Chega de papo: Experimente! No simulador, digite qualquer tempo ou padrão de ciclo que você gostaria de ver. Se forem pontos no tempo, você conseguirá uma coleção de ciclos (combinados numa “onda”) que corresponde aos seus pontos desejados.

padroes de tempo

Mas… a onda combinada não tem valores estranhos entre os intervalos de tempo amarelos? Com certeza. Mas quem vai dizer se um sinal viaja em linhas retas, ou curvas, ou até pula para outras dimensões quando não o medimos? Ele se comporta exatamente como precisamos naqueles momentos igualmente espaçados que definimos.

Fazendo um pico no tempo

Podemos fazer um pico no tempo, como (4 0 0 0), usando ciclos? Usarei parênteses () para uma sequência de pontos no tempo, e colchetes [] para uma sequência de ciclos.

Embora o pico pareça chato para nós, “moradores do tempo” (um só ponto de medição, é isso mesmo?), pense sobre a complexidade no universo dos ciclos. Nossos ingredientes de ciclos devem começar alinhados (no valor máximo, 4) e então “explodir para fora”, cada ciclo com padrões que, somados, se cancelam no futuro. Todo ponto remanescente é zero, que é um equilíbrio complicado quando múltiplos ciclos estão correndo ao redor do círculo (nós não podemos simplesmente “desligá-los”).

Vamos passear por cada ponto no tempo:

Aqui está o truque: quando dois ciclos estão em lados opostos do círculo (Norte e Sul, Leste e Oeste, etc.) a posição combinada deles é zero (3 ciclos podem se cancelar se eles estiverem espalhados uniformemente a 0, 120 e 240 graus).

Imagine uma constelação de pontos se movendo ao redor de um círculo. Aqui está a posição de cada ciclo a cada instante:

Tempo 0 1 2 3

0 Hz: 0 0 0 0 1 Hz: 0 1 2 3 2 Hz: 0 2 0 2 3 Hz: 0 3 2 1

Observe como o ciclo de 3 Hz se inicia em 0, alcança a posição 3, então a posição “6” (com apenas 4 posições, 6 módulo 4 = 2), em seguida posição “9” (9 módulo 4 = 1).

Quando nossos ciclos têm duração de 4 unidades de comprimento, um ciclo que esteja se movendo meio-ciclo a frente (2 unidades) ou estará alinhado (diferença de 0, 4, 8…) ou estará no lado oposto (diferença de 2, 6, 10…).

Ok. Vamos detalhar cada ponto de tempo:

O truque é que as velocidades individuais se cancelam (0 Hz vs. 2 Hz, 1 Hz vs. 3 Hz), assim como os pares alinhados (0 Hz + 2 Hz vs. 1 Hz + 3 Hz).

Quando cada ciclo tem magnitude iguais e fase 0 graus, começamos alinhados e cancelamos depois. (Eu não tenho uma boa prova ainda – alguma proposta? –, mas você pode ver isso contra própria. Experimente [1 1], [1 1 1], [1 1 1 1] e  observe os sinais gerados: (2 0), (3 0 0), (4 0 0 0).

Na minha cabeça, considero esses sinais “picos no tempo”: eles têm uma explosão de atividade num único instante, e são zero nos outros pontos de medição (o nome chique deles é uma função delta).

Aqui está como eu vejo o alinhamento inicial, seguido por um cancelamento líquido:

Interferência de Fourier

Deslocando o pico no tempo

Nem tudo acontece no t=0. Podemos mudar nosso pico para (0 4 0 0)?

Parece que os ingredientes do ciclo são parecidos com (4 0 0 0), mas os ciclos devem ser alinhados em t=1 (um segundo depois). Aqui é onde a fase entra.

Imagine uma corrida com 4 corredores. Em uma corrida normal, todo mundo está alinhado na linha inicial, o (4 0 0 0) padrão de tempo. Chato.

E se quisermos que todos terminem ao mesmo tempo? Fácil. Apenas mova as pessoas para frente ou para trás pela distância apropriada. Talvez a vovozinha possa começar a 5 metros da linha de chegada, Usain Bolt a 100 metros antes, e eles possam cruzar a fita segurando as mãos.

Mudanças de fase, o ângulo inicial, são atrasos no universo cíclico. É assim que ajustamos a posição inicial para atrasar 1 segundo em cada ciclo:

Se os pontos no tempo (4 0 0 0) são feitos de ciclos [1 1 1 1], então os pontos no tempo (0 4 0 0) são feitos de [1 1:-90 1:180 1:90]. (Nota: estou usando “1 Hz”, mas significa “1 ciclo sobre o período de tempo total”).

Uau – estamos resolvendo os ciclos de cabeça!

A visualização da interferência é parecida, exceto pelo alinhamento em t=1.

pico atrasado

Teste a sua intuição: você pode fazer (0 0 4 0), isto é, um atraso de dois segundos? 0 Hz não tem fase. 1 Hz tem 180 graus, 2 Hz tem 360 (o mesmo que 0), e 3 Hz tem 540 (que é igual a 180), por isso é [1 1:180 1 1:180].

Descobrindo a transformada completa

O grande insight: nosso sinal é apenas um monte de picos no tempo! Se misturarmos as receitas para cada pico de tempo, conseguiremos a receita para o sinal completo.

A Transformada de Fourier constrói a receita frequência-por-frequência:

Podemos então fazer um loop através de todas as frequências para obter a transformada completa.

Aqui está a conversão do “português matemático” para matemática completa:

Transformada de Fourier explicada

Algumas observações:

Avante

Esse foi meu artigo mais difícil até agora. A Transformada de Fourier tem vários sabores (discreta/contínua/finita/infinita), abrange uma profunda matemática (função delta de Dirac) e é fácil se perder nos detalhes. Eu tenho esbarrado constantemente nos limites do meu conhecimento.

Mas há sempre uma analogia simples lá fora. Eu me recuso a pensar de outra forma.

Seja um shake ou Usail Bolt e a vovozinha cruzando a linha de chegada, pegue uma simples compreensão e refine-a. A analogia é falha, e isto é normal: é uma jangada para ser usada e deixada para trás uma vez que atravessamos o rio.

Eu percebi quão fraco é meu próprio entendimento quando não consegui resolver a transformada (1 0 0 1) na minha cabeça. Para mim, foi como dizer que eu sabia somar, mas, incrivelmente, não tinha certeza do que “1+1+1+1” seria. Por que não? Não devemos ter uma intuição para a mais simples das operações?

Esse desconforto me levou a rodar a internet para construir minha intuição. Além das referências no artigo, eu gostaria de agradecer:

A meta de hoje foi experimentar a Transformada de Fourier. Guardaremos a analise avançada para um próximo momento.

Happy Math.

Apêndice: projetando sobre ciclos

Stuart Riffle tem uma grande interpretação da Transformada de Fourier:

DFT explicada

Imagine girando seu sinal em uma centrífuga e checar a sua tendência. Eu tenho uma correção: devemos girar para trás (o expoente na equação acima deveria ser e−i2πe^{-i 2\pi} …). Você já sabe o porquê: precisamos de um atraso de fase de modo que os picos se desloquem para o futuro.

Apêndice: uma outra visualização impressionante

Lucas Vieira, autor do excelente Animaçãos da Wikipedia, foi inspirado a fazer essa animação interativa:

Fourier de Brinquedo – Clique para abrir

Fourier Toy

(Lista detalhada de opções de controle)

A Transformada de Fourier é sobre ciclos somados aos ciclos somados aos ciclos. Tente fazer um “pico de tempo” configurando uma intensidade de 1 para todo componente (aperte Enter depois de inserir cada número). Fato engraçado: com um número suficiente de termos, você pode desenhar qualquer forma, até o Homer Simpson.

Apêndice: usando o código

Todo o código e os exemplos são código aberto (MIT licensed, faça o que você preferir).


Tradução: Paulo Mercês.

Revisão: Frederico B. Teixeira.