L'extraction de l'EEG Composants de Signal au sein de MATLAB
J'ai un simple signal EEG dans MATLAB tels que celui représenté dans la figure ci-dessous. Et ce que je voulais, c'était d'extraire les composants de l'EEG, selon le tableau suivant.
- Delta - jusqu'à 4 Hz;
- Thêta - 4 -> 8 Hz
- Alpha - 8 -> 13 Hz
- Bêta - 13 -> 30 Hz
- Gamma - 30 -> 100 Hz
Dans une première tentative pour résoudre ce problème j'ai essayé de construire un filtre passe-bande avec 'fdatool" de MATLAB pour extraire le composant' theta 'signal, mais sans succès.
Le long de joint le code pour le filtre obtenu avec le "fdatool'.
function Hd = filt_teta
%FILTROPARA TETA Returns a discrete-time filter object.
%
% M-File generated by MATLAB(R) 7.9 and the Signal Processing Toolbox 6.12.
%
% Generated on: 05-May-2011 16:41:40
%
% Butterworth Bandpass filter designed using FDESIGN.BANDPASS.
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fstop1 = 3; % First Stopband Frequency
Fpass1 = 4; % First Passband Frequency
Fpass2 = 7; % Second Passband Frequency
Fstop2 = 8; % Second Stopband Frequency
Astop1 = 80; % First Stopband Attenuation (dB)
Apass = 1; % Passband Ripple (dB)
Astop2 = 80; % Second Stopband Attenuation (dB)
match = 'stopband'; % Band to match exactly
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, ...
Astop2, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
Des suggestions comment je peux résoudre le problème?
Merci à tous
OriginalL'auteur Ricardo Frederico Leote Mota | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
Une approche la plus simple pourrait être de simplement prendre la FFT et de remettre à zéro les composantes de fréquence autre que la gamme que vous pourriez être intéressé par, puis FFT inverse pour revenir à l'époque de domaine.
Gardez à l'esprit que vous aurez à zéro, la fréquence positif et négatif de la fréquence que le signal dans le domaine fréquentiel est conjugué symétriques par rapport à l'0 fréquence. Si vous ne le faites pas, vous obtiendrez un signal complexe sur le calcul de la FFT inverse.
EDIT:
Par exemple, le code suivant, produit de deux sinusoïdes dans le domaine temporel, un correspondant de la DFT (calculée avec la FFT), puis un des sommets de la supprimé.
Un couple de choses à noter. Le domaine de fréquence dans la DFT a quelques gammes différentes: un DC offset (constant), qui est l'0 fréquence; positive gamme de fréquences, qui sont (pour une longueur N signal original) les entrées de 1 à N/2; négatif gamme de fréquences qui sont les entrées de N/2 à N-1; Note, ce n'est pas une faute de frappe, la fréquence la plus élevée (l'un à N/2) est dupliqué et est la même valeur à la fois positifs et négatifs des fréquences. (Certaines personnes utilisent
fftshift
de montrer ce qu'un humain peut l'intrigue, mais c'est vraiment juste pour l'esthétique et de compréhension.)Autant que les fréquences de supprimer, vous devrez comprendre cela par vous-même, mais je peux vous donner un indice. La fréquence la plus élevée (à la fréquence de position N/2), va correspondre à la fréquence la plus élevée représentable par votre système, c'est-à fs/2 où fs est votre fréquence d'échantillonnage. Vous pouvez mettre à l'échelle en conséquence, afin de déterminer celles qui le nier.
Si vous n'avez pas de nier le négatif correspondant fréquences correctement, vous obtiendrez un imaginaire du signal lors de la fft inverse.
Un dernier commentaire. Cette méthode ne fonctionnera que si vous avez le luxe d'avoir l'ensemble de votre signal à l'avance car vous avez besoin pour l'utilisation de la DFT sur la totalité du signal. Si vous voulez faire cela en temps réel, vous aurez besoin de créer un certain type de filtre que vous le faisiez auparavant.
OriginalL'auteur Chris A.
Si les filtres n'ont aucune restriction quant à leur longueur, choisissez des arêtes plus vives pour les filtres. Si j'étais à votre place, je ferais construire différents filtres(passe-bas et passe-haut) et traiter le résultat de la transformée de Fourier de voir toute haute fréquence ou à basse fréquence est mélangé avec la gamme de fréquences.
1)Construire un passe-bas, de l'extrait de delta
2) Construire des passe-bande pour thêta, alpha beta
3) créer un filtre passe-haut, extrait de gamma.
Vous utilisez Fstop1 = 3; , mais votre signal varie de 0 à 4 kHz. Par conséquent, vous perdez une partie du signal dans les bords. J'ai choisi de 3.98 par exemple. Il rend filtre beaucoup plus grand. Cependant, la précision serait mieux et la différence pourrait être importante.
OriginalL'auteur Hephaestus