matlab FFT. Coincé compréhension de la relation entre la fréquence et le résultat
Nous essayons d'analyser les flux autour de la circulaire du cylindre et nous avons un ensemble de valeurs de pc que nous avons obtenu à partir de la soufflerie de l'expérience. D'abord, nous avons commencé avec une fréquence d'échantillonnage de 20 Hz et essayé de trouver la fréquence de vortex à l'aide de la FFT de matlab. Nous avons obtenu une fréquence de l'ordre de 7 Hz. Ensuite, nous avons fait la même expérience, mais la seule chose que nous avons changé, c'est l'échantillonnage en fréquence de 20 Hz à 200 Hz. Nous avons eu de la fréquence de l'vortex autour de 70 Hz (c'est là que le pic est situé dans le graphique). Le graphique ne change pas quel que soit le Cp de données que nous entrons. La seule fois que le sommet diffère, c'est lors du changement de la fréquence d'échantillonnage. Il semble que l'augmentation de la fréquence des vortex est proportionnelle à la fréquence d'échantillonnage et cela ne semble pas faire sens. Toute aide concernant l'établissement d'une relation entre la fréquence d'échantillonnage et vortex fréquence seraient grandement appréciés.
Vous devez vous connecter pour publier un commentaire.
Le problème que vous rencontrez est lié à des données "alias" en raison des limitations de la FFT être en mesure de détecter les fréquences supérieures à la Fréquence de Nyquist (moitié de la fréquence d'échantillonnage).
Avec les données de l'aliasing, un pic à la fréquence réelle sera centrée autour de (fréquence réelle modulo fréquence de Nyquist). Dans votre 20 Hz échantillonnage (en supposant que 70 Hz est la fréquence réelle, que les résultats de la fréquence zéro ce qui signifie que vous ne voyez pas la vraie information. Une chose qui peut vous aider avec cela consiste à utiliser la FFT "fenêtrage".
Un autre problème que vous rencontrez peut-être est lié à noisy génération de données via une seule FFT mesure. Il est préférable de prendre un grand nombre de données, l'utilisation de fenêtrage avec chevauchement, et assurez-vous que vous avez au moins 5 Cuc qui vous en moyenne pour trouver votre résultat. Comme Steven Lowe mentionné, vous devriez aussi de l'échantillon à un taux plus rapide si possible. Je recommanderais d'échantillonnage, à la vitesse la plus rapide de vos instruments de l'échantillon.
Enfin, je vous recommande de lire quelques extraits de Recettes ou Numérique en C (<-- lien):
Vous n'avez pas besoin de lire le code source C -- juste les explications. Numérique pour les Recettes de C est un excellent condensé des informations sur le sujet.
Si vous avez plus de questions, laissez-les dans les commentaires. Je vais essayer de faire de mon mieux pour leur répondre.
Bonne chance!
ce n'est probablement pas un problème de programmation, il sonne comme une expérience-le problème de la mesure
je pense que la fréquence d'échantillonnage doit être au moins deux fois le taux de la fréquence d'oscillation, sinon vous obtiendrez des artefacts, ce qui pourrait expliquer la différence. Notez que le ratio de la FFT de la fréquence à la fréquence d'échantillonnage est de 0,35 dans les deux cas. Pouvez-vous répéter l'expérience avec la hausse des taux d'échantillonnage? Je pense que si c'est un étroit cylindre dans un vent fort, il peut être vibrante/oscillante plus vite que le taux d'échantillonnage peut détecter..
j'espère que cette aide, il y a un 97.6% de probabilité que je ne sais pas de quoi je parle 😉
Si ce n'est pas un problème d'aliasing, il semble que vous pourriez être le tracé de la réponse en fréquence sur une échelle de fréquence normalisée, ce qui va changer avec la fréquence d'échantillonnage. Voici un exemple d'une assez bonne façon de tracer la réponse en fréquence d'un signal sous Matlab:
Noter que la fréquence d'échantillonnage doit être explicitement transmis à la
pwelch
commande dans l'ordre de la sortie du “réel” des données de fréquence. Sinon, lorsque vous modifiez la fréquence d'échantillonnage de la corbeille où la résonance se produit sera semblent changer, ce qui est similaire au problème que vous décrivez.Il me semble vous avez besoin de faire un peu de sérieux de la lecture sur le traitement du signal numérique avant que vous pouvez même commencer à comprendre toutes les nuances de la DFT (FFT). Si j'étais vous, j'aurais mis à la terre en premier avec ce grand livre:
En Temps Discret De Traitement Du Signal
Si vous voulez plus d'un traitement mathématique qui va vraiment développez vos capacités,
Analyse de Fourier par Körner
Prendre un coup d'oeil à cette liés à la question. Alors qu'il était initialement posées sur posées sur VB les réponses sont de manière générale de Fft
J'ai essayé à l'aide de la réponse en fréquence de code comme ci-dessus mais il me semble que je n'ai pas le approprié boîte à outils de Matlab. Est-il possible de faire la même chose sans l'aide de la fft de commande? Jusqu'à présent, c'est ce que j'ai:
Je pense qu'il pourrait y avoir quelque chose de mal avec le code que j'utilise. Je ne suis pas sûr de ce que.
Un de mes collègues a écrit quelques belles GPL-homologué fonctions pour l'analyse spectrale:
http://www.mecheng.adelaide.edu.au/~pvl/octave/
(Mise à jour: ce code est maintenant une partie de celui de l'Octave modules:
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/signal/inst/.
Mais il peut être difficile d'extraire juste les pièces dont vous avez besoin à partir de là.)
Ils sont écrits pour les deux Matlab et Octave et servent essentiellement à la baisse-dans le remplacement pour des fonctions analogues dans la boîte à outils de Traitement du Signal. (De sorte que le le code ci-dessus devrait toujours fonctionner correctement.)
Il peut vous aider dans votre analyse de données, de mieux que de rouler votre propre avec
fft
et la comme.