Por que a FFT é "espelhada"?

36

Se você faz um gráfico FFT de um sinal simples, como:

t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )

Sinusóide 1Hz + DC

1Hz

FFT acima

fft

Eu entendo que o número no primeiro compartimento é "quanto DC" existe no sinal.

y(1)  %DC
  > 101.0000

O número no segundo compartimento deve ser "quanto 1 ciclo em todo o sinal" existe:

y(2)  %1 cycle in the N samples
  > 50.6665

Mas não é 101! É cerca de 50,5.

Há outra entrada no final do sinal fft, igual em magnitude:

y(101)
  > 50.2971

Então, 50,5 novamente.

Minha pergunta é: por que a FFT é espelhada assim? Por que não é apenas um 101 emy(2) (o que naturalmente significaria que todos os 101 compartimentos do seu sinal possuem um senoide de 1 Hz?)

Seria preciso fazer:

mid = round( N/2 ) ;

% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];

stem( z )

Virar e adicionar na segunda metade do vetor FFT

insira a descrição da imagem aqui

Pensei agora que a parte espelhada no lado direito foi adicionada corretamente, dando-me o desejado "todos os 101 compartimentos da FFT contêm um senoide de 1Hz"

>> z(2)

ans =

  100.5943
bobobobo
fonte
Uma pergunta semelhante foi respondida aqui: dsp.stackexchange.com/questions/3466/…
pichenettes
Mas isso é especificamente sobre a simetria (acredito que seja chamada simetria hermetiana?) Do sinal.
bobobobo
Para sinais reais puros F (k) = conj (F (Nk)), é por isso que a transformada de Fourier de um sinal real puro é simétrica.
WebMonster 28/10/12
Pergunte a si mesmo: qual resultado você esperaria se seu sinal fosse 1 + cos (2 * pi t) ... E 1 + i cos (2 * pi t) ... E 1 + i pecado (2 * pi * t) ...
pichenettes
2
Como uma transformada de Fourier interrompe um sinal em exponenciais complexas e uma onda senoidal é a soma de 2 exponenciais complexas. dsp.stackexchange.com/a/449/29
endolith

Respostas:

39

Sinais reais são "espelhados" nas metades real e negativa da transformada de Fourier devido à natureza da transformada de Fourier. A transformação de Fourier é definida como a seguinte

H(f)=h(t)ej2πftdt

Basicamente, ele correlaciona o sinal com um monte de sinusóides complexos, cada um com sua própria frequência. Então, como são esses sinusóides complexos? A figura abaixo ilustra um sinusóide complexo.

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

π2 ) Por estarem 90 graus fora de fase, são ortogonais e podem "capturar" qualquer componente do sinal nessa frequência.

A relação entre o exponencial e o cosseno / seno é dada pela fórmula de Euler:

ejx=cos(x)+jsin(x)

H(f)=h(t)ej2πftdt=h(t)(cos(2πft)jsin(2πft))dt

H(f)=h(t)(cos(2π(f)t)jsin(2π(f)t))dt=h(t)(cos(2πft)+jsin(2πft))dt

Comparar a versão da frequência negativa com a versão da frequência positiva mostra que o cosseno é o mesmo enquanto o seno é invertido. Eles ainda estão 90 graus fora de fase um com o outro, no entanto, permitindo que eles capturem qualquer componente de sinal nessa frequência (negativa).

Como os sinusóides de frequência positiva e negativa estão 90 graus fora de fase e têm a mesma magnitude, ambos responderão a sinais reais da mesma maneira. Ou melhor, a magnitude de sua resposta será a mesma, mas a fase de correlação será diferente.

EDIT: Especificamente, a correlação de frequência negativa é o conjugado da correlação de frequência positiva (devido ao componente seno imaginário invertido) para sinais reais. Em termos matemáticos, isto é, como Dilip apontou, o seguinte

H(f)=[H(f)]

Outra maneira de pensar sobre isso:

Componentes imaginários são apenas isso ... Imaginário! Eles são uma ferramenta que permite o emprego de um plano extra para visualizar as coisas e possibilita grande parte do processamento de sinais digitais (e analógicos), se não muito mais fácil do que usar equações diferenciais!

5i

Jim Clay
fonte
Boa resposta - no entanto, um pequeno detalhe, não estou de acordo com "Como eles são iguais, qualquer coisa com a qual um se correlacione, o outro também terá exatamente a mesma magnitude e uma mudança de fase de 90 graus". Eu sei o que você está tentando dizer, no entanto (como você sabe), um seno se correlaciona com um seno (pontuação 1), mas não se correlaciona de maneira alguma com um cosseno, (pontuação 0). Eles são o mesmo sinal, mas com fases diferentes afinal.
Spacey
Você está certo. Há outro problema mais sério também. Eu vou consertar isso mais tarde.
Jim Clay
Seria bom se você pudesse editar sua resposta para responder melhor à pergunta sobre DFTs (embora exista FFT no título), em vez de fornecer a teoria geral das transformações de Fourier.
precisa
@DilipSarwate Meu objetivo é ajudar o interlocutor a entender, e acho que minha abordagem é melhor para isso. Eu votei sua resposta, no entanto, por fazer as contas discretas.
Jim Clay
H(f)=[H(f)]|H(f)|=|H(f)|x(t)é um sinal de valor real e esse é o "espelhamento" que o OP estava perguntando. Em outras palavras, solicito que você edite sua resposta para responder melhor à pergunta realmente solicitada (como solicitei no meu comentário anterior).
Dilip Sarwate
20

N101NN2k4k para acelerar o cálculo da DFT via FFT.

x=(x[0],x[1],x[2],,x[N1])NX=(X[0],X[1],X[2],,X[N1])

X[m]=n=0N1x[n](exp(j2πmN))n,m=0,1,,N1
j=1XxxX[0]=n=0N1x[n]Nexp(jπ)=1 , também temos esse
X[N2]=n=0N1x[n](exp(j2πN/2N))n=n=0N1x[n](1)n
NXx m1mN1
X[m]=n=0N1x[n](exp(j2πmN))nX[Nm]=n=0N1x[n](exp(j2πNmN))n=n=0N1x[n](exp(j2π+j2πmN))n=n=0N1x[n](exp(j2πmN))n=(X[m])
1mN1X[Nm]=(X[m])m=N/2NX[N/2]=(X[N/2])X[N/2]

m(Nm)

1


x11

x[n]=1+sin(2π(0.01n)), 0n100
x[0]=x[100]=1101
X[m]=n=0100(1+sin(2π(n100)))(exp(j2πm101))n
100101X[m]2m99t100t=0,0.01,0.02,,0.99
x[n]=1+sin(2π(0.01n)), 0n99.
X[m]=n=099(1+sin(2π(n100)))(exp(j2πm100))n,
X=(100,50j,0,0,,0,50j)0n99
x[n]=1100m=099X[m](exp(j2πn100))m=1100[10050jexp(j2πn100)1+50j(exp(j2πn100))99]=1+12j[exp(j2πn100)exp(j2πn100)]=1+sin(2π(0.01n))
Dilip Sarwate
fonte
Então, é possível dizer pela FFT se um sinal é periódico ou não ?
displayname
@displayname Essa é uma pergunta separada que deve ser feita por si só (e talvez já tenha sido feita e respondida).
precisa saber é o seguinte
Quando eu cuidadosamente retiro os compartimentos simétricos conjugados [escrevendo um 0 + 0i neles] e reconstruo o sinal do domínio do tempo usando ifft, a magnitude do sinal do domínio do tempo reconstruído diminuiu pela metade. Isso é natural ou é um problema de ferramentas? Eu cuido da normalização da saída FFT e seu reverso após o iFFT.
Raj
14

Observe que um resultado da FFT é espelhado (como no conjugado simétrico) somente se os dados de entrada forem reais.

Para dados de entrada estritamente reais, as duas imagens espelhadas conjugadas no resultado da FFT cancelam as partes imaginárias de quaisquer sinusóides complexos e, portanto, somam um sinusóide estritamente real (exceto pelo pequeno ruído numérico de arredondamento), deixando assim uma representação estritamente ondas senoidais reais.

Se o resultado da FFT não fosse conjugado espelhado, representaria uma forma de onda que tinha valores complexos (componentes imaginários diferentes de zero), e não algo estritamente real valorizado.

hotpaw2
fonte