Comment optimiser les longueurs de fenêtre en STFT?

12

J'ai de nombreux signaux EEG et je veux les analyser en utilisant des méthodes linéaires telles que STFT (Short Time Fourier Transform). Dans STFT, comment puis-je optimiser la longueur de la fenêtre d'analyse pour refléter le spectre de fréquence de chaque fenêtre d'analyse de manière appropriée?

Maen
la source
Si vous voulez optimiser quelque chose, vous avez besoin d'une mesure objective. Votre question ne dit pas vraiment comment vous mesurez la longueur de fenêtre "optimale". Que voulez-vous dire en réfléchissant le spectre de fréquences de manière "appropriée"?
Jason R
@Maen: vous voulez analyser les signaux EEG pour faire quoi avec eux?
Sriram
Les votes et la validation de la meilleure réponse sont requis
Laurent Duval

Réponses:

5

C'est le "principe d'incertitude" classique de la transformée de Fourier. Vous pouvez avoir une haute résolution dans le temps ou une haute résolution en fréquence, mais pas les deux en même temps. Les longueurs de fenêtre vous permettent de faire un compromis entre les deux.

Si vous souhaitez détecter des "événements" dans votre signal EEG avec une résolution de 10 ms, cela devrait être la longueur de votre fenêtre. Cela vous donnera une résolution en fréquence d'environ 100 Hz.

Hilmar
la source
3

La longueur de fenêtre optimale dépendra de votre application. Si votre application est telle que vous avez besoin d'informations sur le domaine temporel pour être plus précis, réduisez la taille de vos fenêtres. Si l'application exige que les informations du domaine fréquentiel soient plus spécifiques, augmentez la taille des fenêtres. Comme Hilmar l'a mentionné, cela Uncertainty Principlene vous laisse vraiment pas d'autre choix. Vous ne pouvez pas obtenir une résolution parfaite dans les deux domaines à la fois. Vous pouvez obtenir une résolution parfaite dans un seul domaine au prix d'une résolution nulle dans l'autre (domaines temps et fréquence) ou entre deux résolutions, mais dans les deux domaines.

Je ne sais pas si cela répond à votre question puisque vous avez posé une question spécifique sur STFT. Vous pouvez essayer d'utiliser wavelet transformspour obtenir les informations contenues dans le signal. Wavelet transformsvous donnera une résolution sur une plage beaucoup plus large en analysant le signal à plusieurs résolutions de fenêtre.

Sriram
la source
0

Je ne connais pas l'EEG mais le problème de base (peut-être devrais-je dire fondamental) lors de l'utilisation du STFT est de choisir une bonne longueur de fenêtre. Si votre EEG est périodique et que vous souhaitez résoudre les fondamentaux et les harmoniques, vous devez utiliser une fenêtre «longue». Si vous souhaitez plutôt détecter le début ou la présence d'un événement ou si vous êtes plus intéressé par l'enveloppe du spectre, vous pouvez utiliser une fenêtre «courte».

niaren
la source
0

J'ai passé beaucoup de temps à optimiser les fenêtres dans l'analyse temps-fréquence ou les banques de filtres . On peut les optimiser pour la détection, le débruitage, la séparation des signaux ... Cela dépend beaucoup de l'application. Comme l'analyse temps-fréquence est généralement redondante, l'optimisation des fenêtres d'analyse ou de synthèse est une tâche différente. Et la longueur d'un seul paramètre dans la conception de la fenêtre.

Le problème est encore plus complexe car la formulation discrétisée de l'optimalité est beaucoup plus compliquée que le cas du domaine temporel continu (voir par exemple une transformée de Gabor concentrée de manière optimale pour les composantes temps-fréquence localisées ).

Donc, ma règle pratique actuelle est la suivante: commencez par une forme et une longueur de fenêtre qui semblent correctes. Répétez ensuite l'analyse avec deux fenêtres de deux fois et demie de longueur et combinez les résultats.

Laurent Duval
la source
-1

Une fenêtre généralement large donne une meilleure résolution en fréquence mais une mauvaise résolution en temps et vice-versa. Regardez cet exemple où j'ai généré un spectrogramme d'une onde sinusoïdale avec 5 kHz et un taux d'échantillonnage de 22050 Hz, à partir de mon code C ++.

entrez la description de l'image ici

Le spectrogramme ci-dessus a une taille de fenêtre de 2048 échantillons et un chevauchement de 1024 échantillons.

Regardez ce spectrogramme:

entrez la description de l'image ici

Celui-ci a une taille de fenêtre de 512 échantillons et un chevauchement de 256 échantillons.

Pouvez-vous voir la différence? Le premier a une meilleure résolution en fréquence que le second. Mais le second a une meilleure résolution temporelle par rapport au premier. Ainsi, le choix de la taille de la fenêtre dépend de votre application. Si vous avez affaire à des échantillons de parole pour suivre la hauteur, choisir une taille de fenêtre plus grande devrait être la bonne.

vishnu
la source
Une onde sinusoïdale simple n'est pas bonne pour expliquer la résolution de fréquence. Même le balayage sinus est préférable pour cela.
jojek
Quel type d'entrée serait donc bon, selon vous?
vishnu
Je l'ai déjà mentionné ci-dessus.
jojek
Tu veux dire balayer le sinus?. Y a-t-il un autre type de signal que je peux utiliser? J'ai une présentation sur le spectrogramme et je voudrais afficher quelques bonnes choses dans ma diapositive sur les fenêtres. J'apprécierais tous les conseils :)
vishnu