2008-10-05 18 views
6

Nous essayons d'analyser l'écoulement autour du cylindre circulaire et nous avons un ensemble de valeurs Cp que nous avons obtenues à partir d'une expérience en soufflerie. Initialement, nous avons commencé avec une fréquence d'échantillonnage de 20 Hz et avons essayé de trouver la fréquence de l'excrétion des vortex en utilisant FFT dans matlab. Nous avons une fréquence d'environ 7 Hz. Ensuite, nous avons fait la même expérience, mais la seule chose que nous avons changé était la fréquence d'échantillonnage - de 20 Hz à 200 Hz. Nous avons obtenu la fréquence de la perte de vortex autour de 70 Hz (c'est là que le pic se trouve dans le graphique). Le graphique ne change pas indépendamment des données Cp que nous entrons. Le seul moment où le pic diffère est quand nous changeons la fréquence de l'échantillon. Il semble que l'augmentation de la fréquence d'excrétion des vortex soit proportionnelle à la fréquence de l'échantillon, ce qui ne semble pas du tout logique. Toute aide concernant l'établissement d'une relation entre la fréquence d'échantillonnage et la fréquence d'excrétion des vortex serait grandement appréciée.matlab FFT. Comprendre la relation entre la fréquence et le résultat

Répondre

0

Jetez un oeil à this question connexe. Bien qu'il a été posée au sujet posé des questions sur VB les réponses sont génériquement à propos TFR

4

c'est probablement pas un problème de programmation, cela ressemble à un problème de mesure expérience

je pense que la fréquence d'échantillonnage doit être au moins deux fois le taux de la fréquence d'oscillation, sinon vous obtenez des artefacts; Cela pourrait expliquer la différence. Notez que le rapport de la fréquence FFT à la fréquence d'échantillonnage est de 0,35 dans les deux cas. Pouvez-vous répéter l'expérience avec des taux d'échantillonnage plus élevés? Je pense que si c'est un cylindre étroit dans un vent fort, il peut vibrer/osciller plus vite que le taux d'échantillonnage peut détecter ..

J'espère que cela aide - il y a une probabilité de 97,6% que je ne fais pas je sais de quoi je parle ;-)

11

Le problème que vous voyez est lié au "repli de données" dû aux limitations de la FFT pouvant détecter des fréquences supérieures au Nyquist Frequency (la moitié de la fréquence d'échantillonnage).

Avec un repliement des données, un pic de la fréquence réelle sera centré autour (fréquence réelle modulo fréquence de Nyquist). Dans votre échantillonnage à 20 Hz (en supposant que 70 Hz est la vraie fréquence, la fréquence est nulle, ce qui signifie que vous ne voyez pas les informations réelles.) Une chose qui peut vous aider est d'utiliser le fenêtrage FFT

Un autre problème que vous pouvez rencontrer est lié à la génération de données bruyantes via la mesure FFT simple.Il est préférable de prendre beaucoup de données, utiliser le fenêtrage avec chevauchement, et assurez-vous d'avoir au moins 5 FFT que vous en moyenne pour trouver votre résultat. Steven Lowe mentionné, vous devriez également échantillonner à des taux plus rapides si possible.Je recommanderais l'échantillonnage au taux le plus rapide que vos instruments peuvent échantillonner

Enfin, je vous recommande de lire quelques extraits de Numerical Recipes in C (< - lien):

Vous n'avez pas besoin de lire le code source C - seulement les explications. Recettes numériques pour C a une excellente information condensée sur le sujet.

Si vous avez d'autres questions, laissez-les dans les commentaires. Je vais essayer de faire de mon mieux pour y répondre.

Bonne chance!

2

S'il ne s'agit pas d'un problème de repliement, il semble que vous puissiez tracer la réponse en fréquence sur une échelle de fréquence normalisée, qui changera avec la fréquence d'échantillonnage. Voici un exemple d'une assez bonne façon de tracer une réponse en fréquence d'un signal dans Matlab:

Fs = 100; 
Tmax = 10; 
time = 0:1/Fs:Tmax; 
omega = 2*pi*10; % 10 Hz 
signal = 10*sin(omega*time) + rand(1,Tmax*Fs+1); 

Nfft = 2^8; 
[Pxx,freq] = pwelch(signal,Nfft,[],[],Fs) 
plot(freq,Pxx) 

Notez que la fréquence d'échantillonnage doit être explicitement transmis à la commande pwelch afin de produire les données de fréquence « réelles ». Sinon, lorsque vous changez la fréquence d'échantillonnage, la case où se produit la résonance changera, ce qui est similaire au problème que vous décrivez.

0

J'ai essayé d'utiliser le code de réponse en fréquence comme ci-dessus mais il semble que je n'ai pas la boîte à outils appropriée dans Matlab. Est-il possible de faire la même chose sans utiliser la commande fft? Jusqu'à présent, voici ce que j'ai:

% FFT Algorithm 

Fs = 200;      % Sampling frequency 
T = 1/Fs;      % Sample time 
L = 65536;     % Length of signal 
t = (0:L-1)*T;    % Time vector 
y = data1;     % Your CP values go in this vector 

NFFT = 2^nextpow2(L); % Next power of 2 from length of y 
Y = fft(y,NFFT)/L; 
f = Fs/2*linspace(0,1,NFFT/2); 

% Plot single-sided amplitude spectrum. 
loglog(f,2*abs(Y(1:NFFT/2))) 
title(' y(t)') 
xlabel('Frequency (Hz)') 
ylabel('|Y(f)|') 

Je pense qu'il peut y avoir quelque chose de mal avec le code que j'utilise. Je ne suis pas sûr de quoi.

+0

Il est préférable de modifier votre question initiale que d'afficher une "réponse" avec une nouvelle question. –

0

Un de mes collègues a écrit de belles fonctions sous licence GPL pour l'analyse spectrale: http://www.mecheng.adelaide.edu.au/~pvl/octave/

(Mise à jour: ce code fait maintenant partie de l'un des modules Octave.
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/signal/inst/
Mais Il est parfois difficile d'extraire les morceaux dont vous avez besoin.

Ils sont écrits pour Matlab et Octave et servent principalement de remplacement des fonctions analogues dans Signal Processing Toolbox. (Donc le code above devrait toujours fonctionner correctement.)

Cela peut aider avec votre analyse de données; mieux que de rouler le vôtre avec fft et autres.

2

Je pense que vous devez faire une lecture sérieuse sur le traitement du signal numérique avant même de commencer à comprendre toutes les nuances de la DFT (FFT). Si je vous étais, je me dans les pieds sur terre d'abord avec ce grand livre:

Discrete-Time Signal Processing

Si vous voulez plus d'un traitement mathématique qui va vraiment développer vos capacités,

Fourier Analysis by Körner