MATLAB' spectrogram ' params

je suis débutant en MATLAB et je devrais effectuer une analyse spectrale d'un signal EEG en dessinant les graphes de la densité spectrale de puissance et du spectrogramme. Mon signal est 10 secondes et une fréquence d'échantillonnage de 160 Hz,1600 samples et avoir quelques questions sur la façon de trouver les paramètres des fonctions dans MATLAB, y compris:

pwelch (x, window, noverlap, nfft, fs);

spectrogram (x, window, noverlap, F, fs);

Ma question est donc: où trouver des valeurs pour les paramètres window et noverlap Je ne sais pas à quoi ils servent.

17
demandé sur Amro 2011-05-04 21:23:54

4 réponses

pour comprendre les fonctions de fenêtre et leur utilisation, regardons d'abord ce qui se passe lorsque vous prenez le DFT d'échantillons de longueur finie. Implicite dans la définition de la transformée de Fourier discrète, est l'hypothèse que la longueur finie de signal que vous envisagez, est périodique.

considérer une onde sinusoïdale, échantillonnée de telle sorte qu'une période complète soit capturée. Lorsque le signal est répliqué, vous pouvez voir qu'il continue périodiquement comme un signal ininterrompu. Le DFT résultant a une seule composante non nulle et qui est à la fréquence de la sinusoïde.

enter image description here

considérons maintenant une onde cosinus avec une période différente, échantillonnée de telle sorte que seule une période partielle est capturée. Maintenant, si vous reproduire le signal, vous voyez des discontinuités dans le signal, marqué en rouge. Il n'y a plus de transition en douceur et vous aurez donc des fuites à d'autres fréquences, comme vu ci-dessous

enter image description here

ce fuite spectrale se produit à travers les lobes latéraux. Pour en savoir plus à ce sujet, vous devriez aussi lire sur le fonction sinc et sa transformée de Fourier, le fonction rectangle. La séquence d'échantillons finis peut être considérée comme une séquence infinie multipliée par la fonction rectangulaire. La fuite qui se produit est liée aux lobes latéraux de la fonction sinc (sinc & rectangular appartiennent à l'Espace Auto-duel et sont F. Ts l'un de l'autre). C'est expliqué plus en détail dans l'article de fuite spectrale I lié à ci-dessus.

fonctions de fenêtre

fonctions de fenêtre sont utilisés dans le traitement du signal pour réduire l'effet des fuites spectrales. Fondamentalement, ce qu'une fonction de fenêtre fait est qu'elle effile la séquence de longueur finie aux extrémités, de sorte que lorsqu'elle est carrelée, elle a une structure périodique sans discontinuités, et donc moins de fuite spectrale.

Certains les fenêtres communes sont Hanning, Hamming, Blackman, Blackman-Harris, Kaiser-Bessel, etc. Vous pouvez lire plus sur eux depuis le lien wiki et les commandes MATLAB correspondantes sont hann,hamming,blackman, blackmanharris et kaiser. Voici un petit échantillon des différentes fenêtres:

enter image description here

vous pourriez vous demander pourquoi il y a autant de fonctions de fenêtre différentes. La raison en est que chacune d'entre elles ont des propriétés spectrales très différentes et ont des largeurs du lobe et amplitudes du lobe latéral. Il n'y a rien de tel qu'un déjeuner gratuit: si vous voulez une bonne résolution de fréquence (le lobe principal est mince), vos sidelobs deviennent plus grands et vice versa. Vous ne pouvez pas avoir les deux. Souvent, le choix de la fonction de fenêtre dépend des besoins spécifiques et se résume toujours à faire un compromis. est un très bon article qui parle de l'utilisation des fonctions de fenêtre, et vous devriez certainement lire à travers elle.

Maintenant, lorsque vous utilisez une fenêtre fonction, vous avez moins d'informations sur les extrémités coniques. Ainsi, une façon de corriger cela, est d'utiliser des fenêtres coulissantes avec un chevauchement comme montré ci-dessous. L'idée est que lorsqu'ils sont assemblés, ils se rapprochent le plus possible de la séquence originale (c.-à-d. que la rangée du bas devrait être aussi proche que possible d'une valeur plate de 1). Les valeurs types varient entre 33% et 50%, selon l'application.

enter image description here

à L'aide de MATLAB's spectrogramme

La syntaxe est spectrogram(x,window,overlap,NFFT,fs)

  • x est votre vecteur de données entier
  • window est votre fonction de fenêtre. Si vous entrez juste un nombre, dites W (doit être entier), puis MATLAB découpe vos données en morceaux de W échantillons et les formes du spectrogramme. Cela équivaut à utiliser une fenêtre rectangulaire de longueur W échantillons. Si vous souhaitez utiliser une autre fenêtre, fournir hann(W) ou n'importe quelle fenêtre que vous choisissez.
  • overlap est le nombre d'échantillons que vous avez besoin de chevauchement. Donc, si vous avez besoin d'un chevauchement de 50%, cette valeur doit être W/2. Utilisez floor(W/2) ou ceil(W/2) si W peut prendre des valeurs bizarres. C'est juste un entier.
  • NFFT est la FFT longueur
  • fs est la fréquence d'échantillonnage de votre vecteur de données. Vous pouvez laisser ce vide, et MATLAB trace la figure en termes de fréquences normalisées et l'axe du temps comme simplement l'index de morceaux de données. Si vous le saisissez, MATLAB modifie l'axe en conséquence.

vous pouvez également obtenir des sorties optionnelles telles que le vecteur temps et le vecteur fréquence et le spectre de puissance calculé, pour une utilisation dans d'autres calculs ou si vous avez besoin de style votre parcelle différemment. Reportez-vous à la documentation pour en savoir plus.

voici un exemple avec 1 seconde d'un signal de chirp linéaire de 20 Hz à 400 Hz, échantillonné à 1000 Hz. Deux fonctions de fenêtre sont utilisés, Hanning et Blackman-Harris, avec et sans recouvrement. La longueur des fenêtres était de 50 échantillons, et le chevauchement de 50%, lorsqu'il était utilisé. Les placettes sont graduées selon la même échelle de 80dB dans chaque placette.

enter image description here

vous pouvez remarquer la différence dans les chiffres (haut-bas) en raison du chevauchement. Vous obtenez une estimation plus claire si vous utilisez le chevauchement. Vous pouvez également observer le compromis entre la largeur du lobe principal et l'amplitude du lobe latéral que j'ai mentionné plus tôt. Hanning a un lobe principal plus mince (ligne proéminente le long de la diagonale oblique), ce qui résulte en une meilleure résolution de fréquence, mais a fuit sidelobs, vu par les couleurs vives à l'extérieur. Blackwell-Harris, par contre, a un lobe principal plus gras (ligne diagonale plus épaisse), mais moins de fuites spectrales, mises en évidence par la région externe uniformément basse (bleue).

78
répondu abcd 2011-05-04 19:24:42

ces deux méthodes ci-dessus sont des méthodes de fonctionnement sur Signaux de courte durée. La non-stationnarité du signal (où les statistiques sont en fonction du temps, Disons moyen, parmi d'autres statistiques, est une fonction du temps) implique qu'on peut seulement supposer que les statistiques du signal sont constants sur de courtes périodes de temps. Il n'y a aucun moyen d'arriver à une telle période de temps (pour laquelle les statistiques du signal sont constantes) exactement et il est donc la plupart du temps deviner le travail et le réglage fin.

dites que le signal que vous avez mentionné ci-dessus n'est pas stationnaire (ce que sont les signaux EEG). Supposons aussi qu'il est stationnaire seulement pendant environ 10m. Pour mesurer de manière fiable des statistiques comme PSD or energy, vous devez mesurer ces statistiques 10ms à la fois. La fonction window-ing est celle avec laquelle vous multipliez le signal pour isoler les 10ms d'un signal, sur lequel vous calculerez PSD etc.. Donc maintenant vous devez traverser la longueur du signal. Vous avez besoin d'une fenêtre de déplacement (pour signal entier 10ms à la fois). Le chevauchement des fenêtres vous donne une estimation plus fiable des statistiques.

Vous pouvez l'imaginer comme ceci:

1. Prenez les 10 premiers mètres du signal.

2. Fenêtre avec la fonction fenêtrage.

3. Calculer les statistiques seulement sur cette portion de 10ms.

4. Déplacez la fenêtre de 5ms (supposons La longueur de chevauchement).

5. La fenêtre de nouveau le signal.

6. Calcul statistique encore.

7. Se déplacer sur toute la longueur du signal.

Il ya beaucoup de différents types de fonctions de la fenêtre - Blackman, Hanning, Hamming, Rectangular. Que et la longueur de la fenêtre et se chevauchent vraiment dépendent de l'application que vous avez et les caractéristiques de fréquence du signal lui-même.

à titre d'exemple, dans le traitement de la parole (où les signaux sont non stationnaires et le fenêtrage est beaucoup utilisé), les choix les plus populaires pour les fonctions de fenêtrage sont martelage / Hanning de longueur 10ms (320 samples at 16 kHz sampling) with an overlap of 80 samples (25% of window length). Cela fonctionne raisonnablement bien. Vous pouvez l'utiliser comme un point de départ pour votre application, puis de peaufiner un peu plus avec des valeurs différentes.

vous pouvez également jeter un oeil aux fonctions suivantes dans MATLAB:

1. hamming

2. hanning

j'espère que vous savez que vous pouvez appeler une tonne d'aide à MATLAB en utilisant la commande help sur la ligne de commande. MATLAB est l'un des logiciels les mieux documentés. Utiliser la commande help pour pwelch définit également la taille et le chevauchement des fenêtres. Qui devrait vous aider trop.

je ne sais pas si toutes ces infos. Je t'ai aidé ou pas, mais en regardant la question, j'ai senti que tu avais peut-être besoin d'un peu d'aide pour comprendre ce qu'était le fenêtrage et le chevauchement.

HTH,

Sriram.

8
répondu Sriram 2011-05-04 18:09:15

pour le dernier paramètre fs, c'est-à-dire la fréquence du signal brut, dans votre cas X, lorsque vous extrayez X à partir de données audio en utilisant la fonction

[X,fs]=audioread('song.mp3')

Vous pouvez obtenir des fs.

-1
répondu ZijunLost 2014-01-24 20:18:08

Etudier comment les paramètres suivants modifient les performances du Sinc fonction:

  1. La Longueur des coefficients
  2. les fonctions de fenêtre suivantes:
    • Blackman Harris
    • Hanning
    • Bartlett
-2
répondu British 2013-12-28 20:54:51