La ganancia de procesamiento de FFT proviene del hecho de que el DFT (del cual FFT es simplemente una implementación rápida) es una transformación lineal no normalizada. Esto es un bocado, así que veamos lo que esto significa.
Asumiré que sabes lo que es una transformación lineal . Es decir, dados los vectores y y una matriz tenemosxyA
y=Ax.
DFT es solo una transformación. De hecho, puede usar el dftmtx
comando MATLAB para generar esta matriz en función de la longitud del vector . Este este caso,x
y=DFT(x).
Esta matriz tiene algunas propiedades. En primer lugar, es una matriz cuadrada, lo que significa que probablemente sea invertible (¡y de hecho lo es!). También nos dice que esencialmente estamos tomando componentes de x y realizando un cambio de base dado por las columnas de para obtener su DFT. Hasta aquí todo bien.AA
Ahora, veamos algunas propiedades más importantes. La matriz es ortogonal. Esto significa que cada columna de es perpendicular a cualquier otra columna, o más matemáticamente, es una matriz diagonal (puede que tenga que pensar un poco sobre por qué esto es cierto). Esta es una propiedad muy agradable, ya que simplemente transponer la matriz nos da algo muy cercano a su inverso.AAATA
Para hacer estricta esta relación inversa Transponer inversa, queremos que la matriz también sea normal . Esta es una matriz cuyo vector de columna tiene una longitud 1. En otras palabras, si es una columna de , entonces Si una matriz es ortogonal y normal, la llamamos ortonormal , y en este caso , por lo que es, de hecho, la inversa de . ¡Ordenado!↔AaAaTa−−−√=1.ATA=IATA
La matriz DFT habitual (o la transformación DFT habitual) es ortogonal, pero no ortonormal. De hecho, si es la matriz DFT, a continuación, donde es el número de columnas (o filas, es cuadrado!) En . Para hacerlo ortonormal, debemos usar lugar. Si lo miras lo suficiente, te das cuenta de que si escalamos las transformaciones hacia adelante y hacia atrás por , estamos haciendo un trabajo adicional para realizar los cálculos, por lo que generalmente solo escalamos por en el inverso.DDTD=NNDDN√1N√1N
Hay mejores razones teóricas para hacerlo por un lado en lugar de por los dos. Vea mi respuesta aquí para más información.