Merci ToTo pour ta réponse.
En fait, lorsque j'ai un signal bien régulier, je procède par détection du complex QRS : un pic maximum très apparant par rapport aux autres ondes. Puis, une fois le signal ECG est décomposé en morceaux commenceant pas onde R, je fais translater pour que ca commence par l'onde P.
Mon programme de décomposition en cycle est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| clear all;
[xn,fs]=wavread('300-0-598-0--sig0.wav');
m=max(xn);
tres=0.7*m;
peaks=[];
% detection des pics dans le signal ecg
for i=1:length(xn)
if xn(i)>tres
peaks=[peaks i];
end
end
%elimination des valeurs répétées dans peaks et calcul du cycle length
distance=[];
peaks2=[];
for j=1:length(peaks)-1
% la longueur d'un cycle est sup à 200
if (peaks(j+1)-peaks(j))>200
distance = [distance peaks(j+1)-peaks(j)];
peaks2=[peaks2 peaks(j)];
end
end
cycle_len=fix(mean(distance));
% reconstruction du signal
xs=[];
for i=1:length(peaks2)-1
cyc = xn(peaks2(i):peaks2(i+1));
xs=[xs ; cyc];
end
plot(xs); |
Mais avec le signal joint (qui n'est pas régulier), cet algorithme ne me donne pas de bon résultats.

Merci pour toute aide.
Partager