Voici le problème. J'ai un tableau 2D de données, la première colonne représente les données de temps et la deuxième colonne représente les données de réponse sinusoïdale, basées sur les données de temps. J'applique fft et j'obtiens ma fréquence (avec laquelle j'ai commencé) dans un bin spécifique comme je m'y attendais et je trouve l'amplitude et l'angle de phase de ce bin. Maintenant, le problème est que j'ai la même configuration mais avec plus de points de données, j'applique à nouveau le fft et le numéro de bin change (ce qui est normal et c'est là où je m'attends à ce qu'il soit), l'amplitude est la même mais l'angle de phase est différent) est-ce d'abord normal? deuxièmement, quelle approche dois-je adopter? Je vous remercie
PS: aucune des configurations (mentionnées ci-dessus) ne donne des données de longueur de puissance de 2, disons que la première donne 1620 points de données et la seconde donne 1745 points de données, donc devrait prendre la prochaine puissance de 2 pour les deux de la début?
Il n'y a rien de intrinsèquement «magique» dans l'exécution d'une puissance de 2 DFT, à part le fait que l'exécution d'une puissance de 2 DFT permet d'effectuer la DFT dansO ( Nl o g( N) ) au lieu de O (N2) . Ainsi, la puissance de 2 DFT, (l' algorithme qui fait cela est connu sous le nom de FFT), vous permet d'accélérer simplement votre calcul DFT par un facteur énorme.
Si vous faites une DFT plus grande que votre vecteur de données, vous allez essentiellement interpoler dans le domaine fréquentiel. Ainsi, votre nouveau pic pourrait ne pas être l'ancien pic équivalent que vous avez détecté pour la première fois, avant de prendre un DFT plus grand. Et comme ce n'est pas la même chose, vous choisissez essentiellement une base exponentielle complexe différente (sinus plus cosinus) cette fois-ci, ce qui signifie que vous auriez probablement une valeur de phase différente, oui.
Oui, si vous souhaitez prendre une puissance de 2 FFT, vous choisirez simplement la puissance suivante de 2 FFT de longueur supérieure à la longueur de votre enregistrement de données.
Vous ne devez jamais prendre une FFT de longueur inférieure à la longueur de votre enregistrement, sauf si vous souhaitez supprimer les données. La question «Quelle doit être la taille de ma FFT», en supposant que la longueur de la FFT est supérieure à la longueur de votre enregistrement de données, puis devient rapidement dépendante de l'application. Habituellement, vous pouvez vous en tirer avec une longueur FFT identique à la longueur de votre enregistrement. Cependant, parfois, vous souhaitez choisir un pic à partir d'une FFT «plus fluide». Dans ce cas, vous pouvez prendre une longueur FFT plus grande (2 fois plus, 3 fois plus, 10 fois plus, etc.) et vous auriez interpolé votre pic dans le domaine fréquentiel. Il n'y a cependant pas de nombre magique. N'oubliez pas que la granularité de votre résultat FFT est toujoursFsN .
la source
Affichage de la réponse de @ user4619:
Utilisation d'IPython, similaire à Matlab
Si vous utilisez des nombres vraiment premiers, plutôt important (un facteur de 50!). Si vous utilisez des chiffres qui ont de faibles facteurs, ce n'est pas important. Mais le faire avec seulement des nombres premiers ne fait que plus rapidement - cela ne change pas du tout la réponse.
la source