Salut à tous,
Alors voilà, dans le cadre d'une application radar permettant de détecter les fréquences des mouvements respiratoires et des battements du coeur, je dois programmer sous matlab une chaîne de traitement du signal permettant de séparer ces différentes fréquences, incluant différents filtrages.
Pour récupérer la fréquence des battements du coeur, j'utilise un filtre passe-bande de Butterworth d'ordre 10 dont je fais varier les fréquences de coupure min et max.
Voici la partie du code correspondant à ce filtrage :
Le signal Bfiltre contient les composantes fréquentielles liées aux mouvements respiratoires et des battements du coeur. Ce signal est bien filtré suivant les fréquences de coupures générées par la boucle "for", tout roule de ce côté la. Par contre, par moment j'obtiens des réponses fréquentielles étranges qui amplifient le signal alors que je n'ai rien demandé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 %filtrage passe bande fréquence battements du coeur for n=0.6:0.1:1 for m=1:0.1:1.6 if n==m Bcoeur=0 else Wncoeur=2*[n m]/fe2 [B2,A2]=butter(10,Wncoeur); freqz(B2,A2,F) pause; close; Bcoeur=filter(B2,A2,Bfiltre); end Bcoeurtab(:,k)=Bcoeur'; k=k+1; end end. Pour illustrer mon propos, j'ai mis en pièce jointe une capture d'une de ces réponses fréquentielles posant problème.
Je viens donc vers vous afin d'élucider ce mystère qui m'a l'air, ma foi, bien mystérieux. Enfin, j'ai tout de même une petite hypothèse, vu que mes bandes sont ultra étroites (moins de 1Hz tout de même), je me demande si ça ne vient pas de la.
Partager