web-dev-qa-db-fra.com

Charger la base de données ECG sur les arythmies MIT-BIH dans MATLAB

Je travaille sur le traitement du signal ECG en utilisant un réseau neuronal qui implique la reconnaissance de formes. Étant donné que je dois collecter toutes les données de Matlab pour l'utiliser comme signal de test, j'ai du mal à le charger dans Matlab. J'utilise MIT base de données sur les arythmies ici .

Le signal doit être indexé et stocké en tant que structure de données au format compatible Matlab. Actuellement, le signal est au format .atr et .dat.

Comment charger une base de données sur les arythmies MIT-BIH sur Matlab?

15
L.fole

Vous pouvez utiliser physionet ATM pour obtenir des fichiers .mat avec lesquels il est plus facile de travailler.

Dans la partie entrée, sélectionnez les dérivations, la longueur, la base de données et l'échantillon souhaités.

Dans la boîte à outils _ sélectionnez export as .mat:

enter image description here

Puis téléchargez le fichier '.mat',

enter image description here

Pour ouvrir le fichier dans MATLAB, voici un exemple de code:

load ('100m.mat')          % the signal will be loaded to "val" matrix
val = (val - 1024)/200;    % you have to remove "base" and "gain"
ECGsignal = val(1,1:1000); % select the lead (Lead I)
Fs = 360;                  % sampling frequecy
t = (0:length(ECGsignal)-1)/Fs;  % time
plot(t,ECGsignal)

et vous obtiendrez

enter image description here

Cependant, si vous deviez lire les fichiers annotation pour arythmie _ ou complexes QRS, ce serait un autre problème.

Modifier

Les base _ et gain proviennent du fichier info (deuxième image). Ce fichier vous fournit diverses informations sur le signal ECG.

enter image description here

Dans la dernière phrase, il est écrit: Pour convertir les unités brutes en unités physiques indiquées ci-dessus, soustrayez «base» et divisez par «gain».

5
Rashid

Vous avez besoin du programme rddata.m (script MATLab) de ce site Web . Le programme peut être trouvé ici . rddata.m est probablement le seul programme dont vous aurez besoin pour lire les signaux ecg. Je me souviens d'avoir utilisé ce programme et cette base de données moi-même il n'y a pas si longtemps.

4
Sriram

J'ai donc lu cette réponse il y a 3 mois et j'ai retiré la base et le gain. Il s’avère que j’ai complètement déplacé mes sommets R dans différentes directions, ce qui a gâché tous mes résultats. Bien que je ne sois pas sûr que cela soit nécessaire ou non dans matlab, ne le faites pas si vous ne prétraitez pas votre signal dans matlab. Je prétraitais mon signal en python, et tout ce que je faisais pour le normaliser était

val = val/2047  % (2047 is the max volt range of signals)

et utilisé des filtres butterworth pour éliminer les artefacts (plage 0.5hz-45hz)

CORRECTION

Le seuil que j'ai sélectionné est 0,5 à 45 pas 5-15 comme je l'avais précédemment signalé. Cette coupure préserve le QRS pour diverses arythmies sans ajouter trop de bruit

# baseline correction and bandpass filter of signals 
lowpass = scipy.signal.butter(1, highfreq/(rate/2.0), 'low') 
highpass = scipy.signal.butter(1, lowfreq/(rate/2.0), 'high') 

# TODO: Could use an actual bandpass filter 
ecg_low = scipy.signal.filtfilt(*lowpass, x=ecg) 
ecg_band = scipy.signal.filtfilt(*highpass, x=ecg_low)
2
Amit Juneja

Il existe un tutoriel sur l'utilisation de matlab pour lire les données. tutoriel pour l'utilisateur matlab

  1. installez "La boîte à outils WFDB pour Matlab" à partir du lien ci-dessus. Ajoutez le dossier de la boîte à outils au chemin de Matlab.

  2. Téléchargez le signal ECG. Assurez-vous de télécharger '.atr', '.dat' and '.hea' ensemble pour le signal à traiter.

  3. La commande dans matlab est la suivante: [tm,signal,Fs]=rdsamp( filename , 1 ) ; [ann,type]=rdann( filename , 'atr' ) ; Remarque: pour le signal "101", son nom est "101". Et vous pouvez vérifier les informations détaillées sur rdsamp et rdann dans le tutoriel.

1
Niu

juste l'utiliser

A=input('Enter Variable: ','s');
load(A);
a=(val(1,:));
b=fir1(100,[0.1,0.25],'stop');
y2=filter(b,1,a);
figure;
plot(y2);
0
Harun