Aquí está el problema. Tengo una matriz de datos 2D, la primera columna representa los datos de tiempo y la segunda columna representa los datos de respuesta sinusoidal, basados en los datos de tiempo. Aplico fft y obtengo mi frecuencia (con la que comencé) en un contenedor específico como esperaba y encuentro la amplitud y el ángulo de fase de ese contenedor. Ahora el problema es que tengo la misma configuración pero con más puntos de datos, aplico el fft nuevamente y el número de bin cambia (lo cual es normal y es donde espero que esté), la amplitud es la misma pero el ángulo de fase es diferente) primero es esto normal? segundo, ¿qué enfoque debo tomar? Gracias
PD: ninguna de las configuraciones (mencionadas anteriormente) da datos de longitud de potencia de 2, digamos que el primero da 1620 puntos de datos y el segundo da 1745 puntos de datos, por lo que debería tomar la próxima potencia de 2 para ambos del ¿comenzando?
No hay nada intrínsecamente 'mágico' sobre realizar una potencia de 2 DFT, aparte del hecho de que realizar una potencia de 2 DFT le permite a uno realizar la DFT enO ( Nl o g( N) ) en vez de O (norte2) . Por lo tanto, la potencia de 2 DFT (el algoritmo que hace esto se conoce como FFT) le permite simplemente acelerar su cálculo de DFT en un factor enorme.
Si hace un DFT más grande que su vector de datos, esencialmente va a interpolar en el dominio de la frecuencia. Por lo tanto, su nuevo pico podría no ser el viejo pico equivalente que detectó por primera vez, antes de tomar un DFT más grande. Y dado que no es lo mismo, esencialmente está eligiendo una base exponencial compleja diferente (seno más coseno) esta vez, lo que significa que probablemente tendría un valor de fase diferente, sí.
Sí, si desea tomar una potencia de 2 FFT, entonces simplemente elegiría la siguiente potencia de 2 FFT de longitud que es mayor que la longitud de su registro de datos.
Nunca debe tomar una FFT de longitud menor que la longitud de su registro, a menos que desee descartar datos. La pregunta "¿Qué tan grande debe ser mi FFT?", Suponiendo que la longitud de la FFT es mayor que la longitud de su registro de datos, se vuelve rápidamente dependiente de la aplicación. Por lo general, puede salirse con una longitud FFT igual a la longitud de su registro. Sin embargo, a veces desea elegir un pico de una FFT 'más suave'. En este caso, puede tomar una mayor longitud de FFT (2 veces más, 3 veces más, 10 veces más, etc.), y habría interpolado su pico en el dominio de la frecuencia. Sin embargo, no hay un número mágico. Recuerde que la granularidad de su resultado FFT es siempreFsnorte .
fuente
Mostrando la respuesta de @ user4619:
Usando IPython, que es similar a Matlab
Si usa números primos realmente importantes, bastante importante (¡un factor de 50!). Si usa números que tienen factores bajos, no es importante. Pero hacerlo solo con números primos solo lo hace más rápido: no cambia la respuesta en absoluto.
fuente