¿Por qué se "refleja" la FFT?


36

Si haces un diagrama FFT de una señal simple, como:

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

1Hz sinusoide + DC

1Hz

FFT de arriba

fft

Entiendo que el número en el primer contenedor es "cuánto DC" hay en la señal.

y(1)  %DC
  > 101.0000

El número en el segundo contenedor debería ser "cuánto 1 ciclo en toda la señal" hay:

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

¡Pero no es 101! Se trata de 50.5.

Hay otra entrada al final de la señal fft, igual en magnitud:

y(101)
  > 50.2971

Entonces 50.5 de nuevo.

Mi pregunta es, ¿por qué la FFT se refleja así? ¿Por qué no se trata solo de 101 pulgadas y(2)(lo que, por supuesto, significa que todos los 101 contenedores de su señal tienen una sinusoide de 1 Hz)?

¿Sería exacto hacer:

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 )

Voltear y agregar la segunda mitad del vector FFT

ingrese la descripción de la imagen aquí

Pensé ahora, la parte reflejada en el lado derecho se agregó correctamente, dándome el deseado "los 101 contenedores de la FFT contienen una sinusoide de 1Hz"

>> z(2)

ans =

  100.5943

Aquí se ha respondido una pregunta similar: dsp.stackexchange.com/questions/3466/…
pichenettes

Pero esto se trata específicamente de la simetría (creo que se llama simetría hermetiana?) De la señal.
bobobobo

Para las señales reales puras F (k) = conj (F (Nk)), esta es la razón por la cual la transformada de Fourier de una señal real pura es simétrica.
WebMonster

Pregúntese: ¿qué resultado esperaría si su señal fuera 1 + cos (2 * pi t) ... Y 1 + i cos (2 * pi t) ... Y 1 + i sin (2 * pi * t) ...
pichenettes

2
Debido a que una transformada de Fourier rompe una señal en exponenciales complejos, y una onda sinusoidal es la suma de 2 exponenciales complejos. dsp.stackexchange.com/a/449/29
endolith

Respuestas:


39

Las señales reales se "reflejan" en las mitades reales y negativas de la transformada de Fourier debido a la naturaleza de la transformada de Fourier. La transformada de Fourier se define como la siguiente:

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

Básicamente, correlaciona la señal con un montón de sinusoides complejos, cada uno con su propia frecuencia. Entonces, ¿cómo son esos sinusoides complejos? La siguiente imagen ilustra una sinusoide compleja.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

El "sacacorchos" es el sinusoide complejo giratorio en el tiempo, mientras que los dos sinusoides que le siguen son los componentes reales e imaginarios extraídos del sinusoide complejo. El lector astuto notará que los componentes reales e imaginarios son exactamente iguales, solo que están desfasados ​​unos de otros 90 grados ( ) Debido a que están 90 grados fuera de fase, son ortogonales y pueden "atrapar" cualquier componente de la señal a esa frecuencia.π2

La relación entre el exponencial y el coseno / seno está dada por la fórmula de Euler.

ejx=cos(x)+jsin(x)

Esto nos permite modificar la transformada de Fourier de la siguiente manera:

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

En las frecuencias negativas, la transformada de Fourier se convierte en la siguiente:

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

La comparación de la versión de frecuencia negativa con la versión de frecuencia positiva muestra que el coseno es el mismo mientras que el seno está invertido. Sin embargo, todavía están 90 grados fuera de fase entre sí, lo que les permite capturar cualquier componente de señal a esa frecuencia (negativa).

Debido a que las sinusoides de frecuencia positiva y negativa están desfasadas 90 grados y tienen la misma magnitud, ambas responderán a señales reales de la misma manera. O más bien, la magnitud de su respuesta será la misma, pero la fase de correlación será diferente.

EDITAR: Específicamente, la correlación de frecuencia negativa es el conjugado de la correlación de frecuencia positiva (debido al componente seno sinusoidal invertido) para señales reales. En términos matemáticos, esto es, como señaló Dilip, lo siguiente:

H(f)=[H(f)]

Otra forma de pensarlo:

Los componentes imaginarios son solo eso ... ¡Imaginario! Son una herramienta que permite el empleo de un plano adicional para ver las cosas y hace posible el procesamiento de señales digitales (y analógicas), ¡si no es mucho más fácil que usar ecuaciones diferenciales!

Pero no podemos romper las leyes lógicas de la naturaleza, no podemos hacer nada 'real' con el contenido imaginario y, por lo tanto, debe cancelarse efectivamente antes de volver a la realidad. ¿Cómo se ve esto en la Transformada de Fourier de una señal basada en el tiempo (dominio de frecuencia complejo)? Si sumamos / sumamos los componentes de frecuencia positiva y negativa de la señal que cancelan las partes imaginarias, esto es lo que queremos decir al decir que los elementos positivos y negativos se conjugan entre sí. Observe que cuando se toma un FT de una señal de tiempo, existen estas señales conjugadas, con la parte 'real' de cada una compartiendo la magnitud, la mitad en el dominio positivo, la mitad en el negativo, por lo que, en efecto, la suma de los conjugados elimina el contenido imaginario y proporciona solo el contenido real.

Lo que significa que no podemos crear una tensión que es 5 i voltios. Obviamente, podemos usar números imaginarios para representar señales del mundo real que tienen valores de dos vectores, como las ondas EM polarizadas circularmente.5i


Buena respuesta: sin embargo, no estoy de acuerdo con "Porque son lo mismo, cualquier cosa con la que uno se correlaciona, el otro también tendrá exactamente la misma magnitud y un cambio de fase de 90 grados". Sin embargo, sé lo que estás tratando de decir (como sabes), un seno se correlaciona con un seno (puntaje 1), pero no se correlacionará en absoluto con un coseno (puntaje 0). Son la misma señal, pero con diferentes fases después de todo.
Spacey

Tienes razón. También hay otro problema más serio. Lo arreglaré más tarde.
Jim Clay

Sería bueno si pudiera editar su respuesta para responder mejor a la pregunta sobre DFT (aunque dice FFT en el título) en lugar de dar la teoría general de las transformadas de Fourier.
Dilip Sarwate

@DilipSarwate Mi objetivo es ayudar al interlocutor a comprender, y creo que mi enfoque es el mejor para eso. Sin embargo, he votado tu respuesta por hacer los cálculos discretos.
Jim Clay

H(f)=[H(f)]|H(f)|=|H(f)|x(t)es una señal de valor real y que este es el "reflejo" sobre el que estaba preguntando el OP. En otras palabras, le solicito que edite su respuesta para responder mejor a la pregunta que realmente se hizo (como solicité en mi comentario anterior).
Dilip Sarwate

20

norte101nortenorte2k4 4k para acelerar el cálculo de DFT a través de FFT.

X=(X[0 0],X[1],X[2],...,X[norte-1]) de norte los puntos de datos se definen como una secuencia X=(X[0],X[1],X[2],,X[N1]) where

X[m]=n=0N1x[n](exp(j2πmN))n,m=0,1,,N1
where j=1. It will be obvious that X is, in general a complex-valued sequence even when x is a real-valued sequence. But note that when x is a real-valued sequence, X[0]=n=0N1x[n] is a real number. Furthermore, if N is an even number, then, since exp(jπ)=1, we also have that
X[N2]=n=0N1x[n](exp(j2πN/2N))n=n=0N1x[n](1)n
is a real number. But, regardless of whether N is odd or even, the DFT X of a real-valued sequence x has Hermitian symmetry property that you have mentioned in a comment. We have for any fixed m, 1mN1,
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])
Thus, for 1mN1, X[Nm]=(X[m]). As a special case of this, note that if we choose m=N/2 when N is even, we get that X[N/2]=(X[N/2]), thus confirming our earlier conclusion that X[N/2] is a real number. Note that an effect of the Hermitian symmetry property is that

the m-th bin in the DFT of a real-valued sequence has the same magnitude as the (Nm)-th bin.

MATLABi people will need to translate this to account for the fact that MATLAB arrays are numbered from 1 upwards.


Turning to your actual data, your x is a DC value of 1 plus slightly more than one period of a sinusoid of frequency 1 Hz. Indeed, what you are getting is

x[n]=1+sin(2π(0.01n)), 0n100
where x[0]=x[100]=1. Thus, the first and the last of 101 samples has the same value. The DFT that you are computing is thus given by
X[m]=n=0100(1+sin(2π(n100)))(exp(j2πm101))n
The mismatch between 100 and 101 causes clutter in the DFT: the values of X[m] for 2m99 are nonzero, albeit small. On the other hand, suppose you were to adjust the array t in your MATLAB program to have 100 samples taken at t=0,0.01,0.02,,0.99 so that what you have is
x[n]=1+sin(2π(0.01n)), 0n99.
Then the DFT is
X[m]=n=099(1+sin(2π(n100)))(exp(j2πm100))n,
you will see that your DFT will be exactly X=(100,50j,0,0,,0,50j) (or at least within round-off error), and the inverse DFT will give that for 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))
which is precisely what you started from.

So, is it possible to tell from the FFT if a signal is periodic or not?
displayname

@displayname That is a separate question that should be asked in its own right (and perhaps has been asked and answered already).
Dilip Sarwate

When I carefully pry out the conjugate symmetrical bins [By writing a 0 + 0i into them] and reconstruct the time domain signal using ifft, the magnitude of the reconstructed time domain signal has halved. Is this natural or is it a tooling problem? I do take care of FFT output normalization and its reverse after iFFT.
Raj

14

Note that an FFT result is mirrored (as in conjugate symmetric) only if the input data is real.

For strictly real input data, the two conjugate mirror images in the FFT result cancel out the imaginary parts of any complex sinusoids, and thus sum to a strictly real sinusoid (except for tiny numerical rounding noise), thus leaving you with a representation of strictly real sine waves.

If the FFT result wasn't conjugate mirrored, it would represent a waveform that had complex values (non-zero imaginary components), not something strictly real valued.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.