2017-03-15 4 views
1

Comme vous le savez la TFCT a un résultat de la matrice, avec la dimension donnée par:définir un intervalle de fréquence des sorties STFT

number of frequency bins * number of time frames. 

Par exemple, supposons que j'ai un signal avec des caractéristiques et je veux appliquer Méthode STFT avec les paramètres d'entrée suivants:

  • fréquence d'échantillonnage: 250 000 Hz;
  • longueur des données: 498900 échantillons;
  • longueur de la fenêtre: nftt=625 échantillons;
  • taille de saut: 125 échantillons

Avec ces paramètres mon STFT aura une sortie avec la taille: 313*3987 (la méthode de calcul de ces valeurs existe dans certains sites)

Maintenant, ma question est de savoir comment Je définis une limite pour la dimension de fréquence de la sortie STFT? Je pense que je devrais calculer mes valeurs de seuil comme un numéro d'index dans la sortie STFT, si oui, comment puis-je le faire?

J'ai la résolution en fréquence, mais quand je la multiplie par nfft, c'est la moitié de la valeur de la fréquence d'échantillonnage.

Répondre

2

Vous n'avez pas fourni comment vous avez calculé la résolution de fréquence, mais voici ce qu'il devrait être:

frequency_resolution = sampling_rate/nfft; 

Dans votre cas avec un taux d'échantillonnage de 250,000Hz et nfft=625, cela devrait vous donner un résolution de fréquence de 400Hz. Vous pouvez vérifier que 625*400 est bien égal à 250000.

Ensuite, si vous voulez inclure des fréquences de 0 Hz à des fréquences ne dépassant pas max_frequency dans le cadre de votre sortie STFT, la taille maximale le long de l'axe de fréquence doit être donnée par:

size_frequency_axis = 1 + floor(max_frequency/frequency_resolution); 

En cas particulier vous pouvez également vérifier que lorsque max_frequency est réglé sur la fréquence de Nyquist (250000/2 = 125000), la taille calculée est 1+floor(125000/400) = 313 (qui correspond à la taille de sortie STFT de votre spectre complet).

Comme une généralisation, si vous souhaitez inclure une gamme de fréquences non à partir de 0 Hz, alors vous pouvez calculer de façon similaire l'indice des fréquences minimales et maximales, et obtenir la taille correspondante avec:

min_frequency_index = 1 + floor(min_frequency/frequency_resolution); 
max_frequency_index = 1 + floor(max_frequency/frequency_resolution); 
size_frequency_axis = max_frequency_index - min_frequency_index + 1;