Existe alguma aplicação prática para executar uma transformação de Fourier dupla? ... ou uma transformação inversa de Fourier em uma entrada no domínio do tempo?


11

Em matemática, você pode usar a derivada dupla ou a integral dupla de uma função. Existem muitos casos em que a realização de uma derivada dupla modela uma situação prática do mundo real, como encontrar a aceleração de um objeto.

Como a transformada de Fourier recebe um sinal real ou complexo como entrada e produz um sinal complexo como saída, nada impede que você pegue essa saída e aplique a transformada de Fourier uma segunda vez ... Existe algum uso prático para fazer isto? Ajuda a modelar algumas situações complexas do mundo real?

Com a mesma lógica, nada o impediria de transformar a transformada inversa de Fourier do seu sinal de entrada original no domínio do tempo ... isso seria útil? Por que ou por que não?

Respostas:


9

"Existe alguma aplicação prática?" Definitivamente sim, pelo menos para verificar o código e os erros associados.

"Na teoria, teoria e prática combinam. Na prática, não combinam." Portanto, matematicamente, não, conforme respondido por Matt. Porque (como já respondido), F(F(x(t)))=x(t) (até um fator de escala potencial). No entanto, pode ser útil computacionalmente, porque a equação acima é geralmente implementada via transformada discreta de Fourier e seu avatar rápido, a FFT.

Uma primeira razão surge da vontade de verificar se a implementação de Fourier, codificada por você, outra pessoa ou de uma biblioteca, faz o que deve ser feito com seus dados. Ordenação de amostras, fatores de escala, limites no tipo de entrada (realidade, profundidade de bits) ou comprimento são fontes de possíveis erros subsequentes para implementações de Fourier como a FFT. Portanto, como verificação de integridade, é sempre bom verificar se as versões implementadas herdam, pelo menos aproximadamente, as propriedades teóricas. Como você verá, como mostrado por Machupicchu, você não recupera exatamente uma entrada real invertida: frequentemente, a parte imaginária não é exatamente zero e a parte real é o que se espera, mas dentro de um pequeno erro relativo, devido a cálculos imperfeitos do computador (ponto flutuante) dentro de uma tolerância dependente da máquina. Isso é visível na figura a seguir. A FFT é aplicada duas vezes em um sinal aleatório de 32 amostras e invertida. Como você pode ver, o erro é pequeno, usando flutuadores de precisão dupla.

dados, sua FFT invertida dupla e erro

Se o erro não for relativamente pequeno, pode haver erros no código que você usa.

x01e6

xk+1=Re(f(f(f(f(xk)))))
fmax|xkx0|

dados, sua FFT quádrupla e erros máximos nas iterações

Como você pode ver, a ordem de magnitude do erro mudou, devido ao tamanho do sinal. Além disso, o erro máximo aumenta constantemente. Após iterações, ele permanece pequeno o suficiente. Mas você pode supor que, com um cubo -voxel e milhões de iterações, esse erro pode se tornar não negligenciável.10001000×1000×1000

Limitar o erro e avaliar seu comportamento em iterações podem ajudar a detectar esses comportamentos e reduzi-los com limiares ou arredondamentos apropriados.

Informação adicional:


1
Eu realmente amo essa resposta e a teria marcado como a resposta aceita, mas acho que o que a maioria das pessoas que procuram essa pergunta procura é a informação teórica que Matt forneceu no link. +1 para uma ótima resposta.
tjwrona1992

1
Eu realmente aprecio o seu comentário. No entanto, atualizei a resposta com números apropriados, para mostrar que os erros nas implementações discretas de Fourier são importantes.
Laurent Duval

17

Não, tomar a transformação de Fourier duas vezes é equivalente à inversão do tempo (ou inversão de qualquer dimensão em que você esteja). Você obtém vezes uma constante que depende do tipo de dimensionamento usado para a transformação de Fourier.x(t)

A transformação inversa de Fourier aplicada a um sinal no domínio do tempo fornece apenas o espectro com inversão de frequência. Veja esta resposta para mais detalhes.


4
Você apenas recursivamente me surpreendeu.
precisa saber é o seguinte

Ilustro o que Matt. L disse, mas em 2D com o meu código? ou seja, obtemos f (-x, -y).
Machupicchu

@Machupicchu, sim, isso parece certo.
precisa saber é o seguinte

haha, em seguida, você pode selecionar os meus anúncios em resposta a um superior ^^ (ele tem 53K rep por isso não doe mak qualquer diff para ele haha)
Machupicchu

Logo depois que eu disse que eu percebi que provavelmente há maneiras mais fáceis do que uma dupla de Fourier Transform para o tempo invertido um sinal haha
tjwrona1992

16

Enquanto tomando a transformada de Fourier diretamente duas vezes seguidas apenas lhe dá um tempo de inversão trivial que seria muito mais barato de implementar, sem FT, não é coisa útil que pode ser feito tomando uma transformada de Fourier, aplicando alguma outra operação, e depois novamente Fourier transformando o resultado disso. O exemplo mais conhecido é a autocorrelação , que é um tipo de convolução de um sinal consigo mesmo. E as convoluções são O ( n 2 ) se implementadas ingenuamente, mas apenas O ( n · log n) ao fazer um desvio através da transformação de Fourier. Portanto, a autocorrelação geralmente é feita por FT 's sinal, tomando o quadrado absoluto e IFT-lo de volta ao domínio do tempo.


2
Além disso, há cepstrum , a transformada inversa de Fourier do logaritmo da transformada de Fourier. Pode ser usado para detectar sinais periódicos.
Olli Niemitalo 25/08/19

12

A transformada 2D de Fourier (2D DFT) é usada no processamento de imagens, pois uma imagem pode ser vista como um sinal 2D. Por exemplo, para uma imagem em escala de cinza , , isso significa que nas coordenadas e a imagem tem o valor de intensidade z. Veja isso por exemplo:II(x,y)=zxy

https://ch.mathworks.com/help/matlab/ref/fft2.html

Tente o seguinte:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

e compare com:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

mais ou menos assim. Eu apliquei fft2 às vezes, não ifft2 na segunda vez. Acho que isso ilustra o que @Matt L. disse:

"tomar a transformada de Fourier duas vezes é equivalente à inversão do tempo",

você pode ver a imagem invertida por causa do negativo imaginário -i em vez de positivo no ifft ().

insira a descrição da imagem aqui

Eu também fiz isso para um sinal 1D (por exemplo, temporal):

insira a descrição da imagem aqui


Estou ciente de que existe uma transformação 2D de Fourier, mas isso não é o mesmo que pegar um sinal de entrada e executá-lo através do algoritmo, pegando a saída dessa execução e executando-a novamente.
precisa saber é o seguinte

1
A transformação de Fourier é separável.
Machupicchu

Minha pergunta também se aplicaria a uma transformação 2D de Fourier. Em teoria, você poderia pegar um sinal de entrada 2D, aplicar a transformação 2D Fourier, pegar o sinal de saída 2D e usá-lo como entrada e aplicar a transformação 2D Fourier novamente.
precisa saber é o seguinte

veja no Matlab o que acontece se você fizer o seguinte: cf. Eu atualizei minha resposta
Machupicchu

1
Eu sugiro que você use a parte real, em vez do valor absoluto
Laurent Duval

6

Para responder à segunda pergunta, nas comunicações digitais existe atualmente uma técnica em uso em telefones celulares que faz bom uso da aplicação do IFFT a um sinal no domínio do tempo. O OFDM aplica um IFFT a uma sequência de dados no domínio do tempo no transmissor e depois reverte isso com uma FFT no receptor. Embora a literatura goste de usar o IFFT-> FFT, realmente não faz diferença qual deles vem primeiro.

diagrama do transmissor OFDM

O principal benefício aqui está fortemente relacionado à resposta anterior. Existe um tipo de distorção que se chama desbotamento por caminhos múltiplos , e os celulares em áreas urbanas densas precisam lidar com muito disso. Gostamos de modelar o desbotamento de caminhos múltiplos como uma convolução com coeficientes desconhecidos. Como a cadeia de eventos se parece com IFFT-> Transmit-> Apply multipath-> Receive-> FFT, o desbotamento do multipath percorrerá a FFT e se tornará uma simples multiplicação ponto a ponto com valores desconhecidos. Esses valores são muito mais fáceis de prever e retificar do que os coeficientes de convolução.

Esse efeito também torna um sinal mais resistente a multipath / fading que pode eliminar (ou "nulo") um canal de frequência inteiro. Este artigo descreve como

Essa propagação de caminhos múltiplos pode criar nulos espectrais profundos na banda passante de frequência dos sinais de rádio recebidos devido à interferência destrutiva de duas cópias do sinal que chegam em momentos ligeiramente diferentes. Um nulo no OFDM pode remover um ou mais subportadoras. O mesmo nulo no QAM de transportadora única pode eliminar uma explosão de símbolos sequencialmente adjacentes, dependendo do padrão de dados específico naquele instante. Em casos extremos, a perda de aquisição de sinal é ainda possível. Em seguida, ele recorre ao poder do FEC para recuperar a sequência de dados original.


Uau, isso é incrivelmente interessante! Obrigado! :)
tjwrona1992 23/08/1919

1

Esta informação foi fornecida pelo usuário "Birdwes", mas ele não tinha reputação suficiente para publicá-la, então eu a publicarei aqui para ele porque parece relevante e útil.

"Não tenho pontos suficientes neste fórum para adicionar um comentário, por isso estou fazendo isso aqui: dê uma olhada no código fonte do Accord.Math Hilbert Transform e você verá por que isso pode ser uma opção viável: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs

Os usos práticos incluem a construção de transmissores SSB ou quase qualquer plano de modulação. Consulte a modulação de QI e verá por que a mudança de fase de -90 graus é relevante. Um produto de princípios trigonométricos. por exemplo, https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf

A Hilbert Transform usa um passo intermediário entre as FFTs para zerar os componentes negativos. Você pode abusar dele para filtrar outras frequências também. "

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.