Tengo un algoritmo que pone a cero una secuencia de 4N, hace una FFT y solo usa los puntos N de frecuencia más baja del 4N generado.
Esto parece mucho trabajo desperdiciado, ¿alguna idea de cómo se puede hacer esto más rápido?
Tengo un algoritmo que pone a cero una secuencia de 4N, hace una FFT y solo usa los puntos N de frecuencia más baja del 4N generado.
Esto parece mucho trabajo desperdiciado, ¿alguna idea de cómo se puede hacer esto más rápido?
Respuestas:
Si solo tiene unos pocos contenedores, lo siguiente puede ser muy eficiente para usted:
1. Simplemente haga el DFT de cada frecuencia que necesite.
2. Utilice el algoritmo de Goertzel para cada frecuencia en cuestión.
Cero relleno a 4X de longitud, calculando la FFT más larga, y luego usando solo los contenedores de 1/4 de fondo produce resultados casi idénticos a la interpolación Sinc en ventana de la FFT de longitud original.
Tan solo use la longitud FFT original e interpolar usando un núcleo de interpolación Sinc trifásico con un ancho de ventana adecuado.
El relleno cero en el dominio del tiempo le brinda una solución de mayor frecuencia pero no información nueva, por lo que proporciona esencialmente interpolación en el dominio de la frecuencia. Dependiendo de la naturaleza de sus señales y de la precisión requerida, puede obtener los puntos de frecuencia adicionales con una FFT regular de N puntos y realizar una interpolación adecuada (lineal, spline, pchip, sinc, etc.).