MATLAB 'spectrogramme' params
Je suis un débutant en MATLAB et je doit effectuer une analyse spectrale d'un signal EEG de dessin de graphes de densité spectrale de puissance et spectrogramme. Mon signal est 10
secondes et une fréquence d'échantillonnage de 160 Hz
, un total de 1600 samples
et avez des questions sur la façon de trouver les paramètres des fonctions de MATLAB, y compris:
pwelch (x, window, noverlap, nfft, fs);
spectrogram (x, window, noverlap, F, fs);
Ma question alors est de savoir où trouver des valeurs pour les paramètres window
et noverlap
je ne sais pas ce qu'ils sont pour.
Vous devez vous connecter pour publier un commentaire.
De comprendre les fonctions de la fenêtre & son utilisation, nous allons d'abord regarder ce qui se passe quand vous prenez la TFD de longueur finie échantillons. 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érons une onde sinusoïdale, à l'échantillonnage, telles que l'ensemble de la période est capturé. Lorsque le signal est reproduit, vous pouvez voir qu'il continue périodiquement comme une interruption de signal. Le résultant DFT a une seule composante non nulle et qui est à la fréquence de la sinusoïde.
Maintenant, considérons une onde cosinus avec une autre période, à l'échantillonnage, telles que seulement une partie de la période est capturé. Maintenant, si vous reproduire le signal, vous voyez des discontinuités dans le signal, marqué en rouge. Il n'est plus une transition en douceur et ainsi vous aurez la fuite à d'autres fréquences, comme on le voit ci-dessous
Ce fuite spectrale se produit à travers le côté lobes. Pour comprendre plus au sujet de cela, vous devriez également lire sur le fonction sinc et sa transformée de Fourier, la rectangle fonction. Le fini échantillonnés séquence peut être considérée comme une séquence infinie multiplié par la forme rectangulaire de la fonction. La fuite qui se produit est liée à l'lobes latéraux de la fonction sinc (sinc & rectangulaire appartiennent à l'auto-dual de l'espace et sont F. Ts les uns des autres). Ceci est expliqué plus en détail dans la fuite spectrale article que j'ai lié ci-dessus.
Fonctions de la fenêtre de
Les fonctions de la fenêtre sont utilisés dans le traitement du signal pour réduire l'effet des fuites spectrales. En gros, ce qu'est une fonction de fenêtre n'est qu'il va en diminuant la longueur finie de la séquence à la fin, de sorte que lorsque carrelée, il a une structure périodique sans discontinuités, et donc moins de fuite spectrale.
Certains de la commune de windows sont de Hanning, Hamming, Blackman, Blackman-Harris, de Kaiser-Bessel, etc. Vous pouvez lire plus sur eux à partir du lien wiki et le correspondant MATLAB commandes sont
hann
,hamming
,blackman
,blackmanharris
etkaiser
. Voici un petit échantillon des différentes fenêtres:Vous pourriez vous demander pourquoi il y a tant de différentes fonctions de la fenêtre. La raison en est que chacun de ces sont très différentes des propriétés spectrales différentes lobe principal de la largeur et de lobe latéral amplitudes. Il n'y a pas une telle chose comme un repas gratuit: si vous voulez une bonne résolution en fréquence (lobe principal est mince), votre lobes latéraux de devenir plus grande et vice versa. Vous ne pouvez pas avoir les deux. Souvent, le choix de la fonction de fenêtre est dépendante sur les besoins spécifiques et revient toujours à faire un compromis. Cette est un très bon article qui en parle en utilisant les fonctions de la fenêtre, et vous devez absolument le lire à travers elle.
Maintenant, lorsque vous utilisez une fonction de fenêtre, vous avez moins d'informations sur les extrémités coniques. Donc, un moyen de corriger cela, c'est d'utiliser des fenêtres coulissantes avec un chevauchement comme indiqué ci-dessous. L'idée est que, une fois mis ensemble, ils approximative de la séquence d'origine du mieux que possible (c'est à dire, le bas de ligne doit être aussi proche d'une télévision valeur de 1 que possible). Les valeurs typiques varient entre 33% à 50%, en fonction de l'application.
À l'aide de MATLAB spectrogramme
La syntaxe est
spectrogram(x,window,overlap,NFFT,fs)
où
x
est l'ensemble de votre vecteur de donnéeswindow
est votre fonction dans la fenêtre. Si vous entrez un numéro de direW
(doit être un entier), puis MATLAB côtelettes de vos données dans des blocs deW
échantillons et les formes de la spectrogramme d'elle. Ceci est équivalent à l'utilisation d'une fenêtre rectangulaire de longueurW
échantillons. Si vous souhaitez utiliser une autre fenêtre, fournirhann(W)
ou quelle que soit la 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 êtreW/2
. Utilisationfloor(W/2)
ouceil(W/2)
siW
peut prendre des valeurs bizarres. C'est juste un entier.NFFT
est la FFT longueurfs
est la fréquence d'échantillonnage de votre vecteur de données. Vous pouvez laisser ce vide, et MATLAB les parcelles de la figure en termes de fréquences normalisées et l'axe de temps tout simplement le segment de données de l'index. Si vous y entrez, MATLAB échelles de l'axe en conséquence.Vous pouvez également obtenir des sorties facultatives comme le vecteur du temps et de la fréquence de vecteur et le spectre de puissance calculée, pour une utilisation dans d'autres calculs ou si vous avez besoin pour le style de votre parcelle de terrain de manière différente. Reportez-vous à la la documentation pour plus d'info.
Voici un exemple avec 1 seconde d'un chirp linéaire du signal de 20 Hz à 400 Hz, échantillonné à 1000 Hz. Deux fonctions de la fenêtre sont utilisés,
Hanning
etBlackman-Harris
, avec et sans recouvrement. La fenêtre de longueurs ont été de 50 échantillons, et le chevauchement de 50% lorsqu'elle est utilisée. Les parcelles sont mises à l'échelle à la même 80dB gamme dans chaque parcelle.Vous pouvez remarquer la différence dans les chiffres (de haut en bas) en raison du chevauchement. Vous obtenez un nettoyant pour estimer si vous utilisez chevauchement. Vous pouvez également observer le compromis entre la largeur du lobe principal et lobe latéral de l'amplitude que je l'ai mentionné plus tôt. Hanning dispose d'un mince lobe principal (le plus éminent de la ligne le long de l'inclinaison de la diagonale), résultant en une meilleure résolution en fréquence, mais a fuit lobes latéraux, vu par les couleurs vives à l'extérieur. Blackwell-Harris, d'autre part, a un plus gros lobe principal (plus épais ligne en diagonale), mais moins de fuite spectrale, comme en témoigne le uniformément faible (bleu) extérieure de la région.
Ces deux méthodes ci-dessus sont à court de temps, des méthodes d'exploitation sur les signaux. 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'en arriver à une telle période de temps (pour lesquels les statistiques du signal sont constants) exactement où il est principalement deviner de travail et de peaufinage.
Dire que le signal que vous avez mentionné ci-dessus est non stationnaire (ce qui signaux EEG sont). Supposons également qu'il est à l'arrêt que pendant environ 10 ms ou plus. Pour mesurer de manière fiable les statistiques de
PSD or energy
, vous avez besoin de mesurer ces statistiques 10ms à la fois. La fenêtre-ing fonction de ce que vous multiplier le signal d'isoler que 10ms d'un signal, à laquelle vous serez en informatique PSD etc.. Alors maintenant, vous avez besoin de traverser la longueur du signal. Vous avez besoin d'un changement de fenêtre (à la fenêtre de la totalité du signal 10ms à un moment). Chevauchement de la windows vous donne une estimation plus fiable de la statistique.Vous pouvez imaginer comme ça:
1. Prendre la première à 10ms du signal.
2. Fenêtre avec la fonction de fenêtrage.
3. Calculer des statistiques sur ce 10ms partie.
4. Déplacer la fenêtre en 5ms (à supposer longueur de chevauchement).
5. La fenêtre de nouveau le signal.
6. Calculer la statistique de nouveau.
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.Par exemple, dans le traitement de la parole (où les signaux sont non stationnaires et fenêtrage de devient beaucoup utilisé), les choix les plus populaires pour les fonctions de fenêtrage de Hamming/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 prendre un coup d'oeil à l'une des fonctions suivantes dans MATLAB:
1.
hamming
2.
hanning
J'espère que vous savez que vous pouvez appeler jusqu'à une tonne de les aider dans MATLAB à l'aide de la commande de l'aide sur la ligne de commande. MATLAB est un des mieux documentés logiciels là-bas. À l'aide de la commande d'aide pour
pwelch
tire aussi des définitions de la taille de la fenêtre et se chevauchent. Qui devrait vous aider trop.Je ne sais pas si toutes ces infos. vous a aidé ou pas, mais en regardant la question, j'ai senti que vous pourriez avoir besoin d'un peu d'aide pour comprendre ce que le fenêtrage et le chevauchement était tout au sujet.
HTH,
Sriram.
Pour le dernier paramètre fs, qui est le taux de fréquence du signal brute, dans votre cas, X, lorsque vous avez extrait X à partir de données audio à l'aide de la fonction
Vous pouvez obtenir fs de lui.
Enquêter sur la façon dont les paramètres suivants de changer la performance de la Sinc fonction: