filtre numerique de butterworth

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
bonjour,
je dois filtrer un signal échantillonné à 5Khz en temps réel et
récupérer le fondamental. je connais la fréquence du signal à peut
prés ( de 10hz à 100 Hz)
J'ai récupérer l'algorithme ( filtre de butterworth a 2 pôles)
http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
 et ça marche super bien
 y[2] =   (x[0] + x[2]) + 2 * x[1] + ( A* y[0]) + ( B * y[1]);
Par contre le site me donne les coefficients recalculés mais pas
l'algorithmes et comme  les coefficients A et B dépendent de la
fréquence du signal , je dois les recalculer moi même et je ne sais pas
comment faire.
Si quelqu'un a un site explicatif simplifié ou peut me dire les formules
ça serait sympa.


Re: filtre numerique de butterworth

Quoted text here. Click to load it

Bonjour,

la transmittance isochrone d'un Butterworth d'ordre 2, c'est:

1/ (1 + j sqrt(2) w/w0 - (w/w0)^2)

si vous voulez le réaliser en numérique, l'approximation classique est jw #
2 / Te * (1-z^(-1)) / (1+z^(-1))

où z^(-1) est l'opérateur retard (implicitement de Te) et Te la période
d'échantillonnage.

par exemple, z^(-1) * x(n) = x(n-1)

Donc dans la transmittance isochrone vous remplacez jw par son
approximation....puis quelques lignes de maths pour arriver à l'équation de
récurrence....

Si vous n'y arrivez pas je vous donnerai le résultat.

Cordialement

Vincent

PS: la réponse n'est pas la même, bien sûr. Notamment, fréquence de coupure
numérique =  fe / pi * arctan( pi * f0 / fe)...choisir f0 en conséquence...

exemple: coupure du filtre numérique désirée à 1 kHz, fe = 5 kHz

f0 = fe / pi * (pi * fdes / fe) = 1156 kHz

c'est ce f0 là qui doit être utilisé dans la transmittance isochrone pour
les calculs.



Re: filtre numerique de butterworth

Quoted text here. Click to load it

f0 = fe / pi * tan(pi * fdes / fe) = 1156 kHz


Re: filtre numerique de butterworth
Je te remercie de ta réponse , pourrais tu me donner par exemple les
valeurs A et B pour F50% Hz.







Le Mon, 14 Sep 2009 14:27:20 +0200, Vincent Thiernesse a écrit :

Quoted text here. Click to load it


Re: filtre numerique de butterworth

Quoted text here. Click to load it

d'abord, ta formulation est incomplète:

y[2] = 1 / C  * (x[0] + x[2]) + 2 * x[1] +  A* y[0]) +  B * y[1])

avec:
*) C = 1 + a + b
*) B = 2 * (b - 1)
*) A = a - b - 1

où:

a = sqrt(2) * fe / (pi * f0)
b = (fe / (pi * f0))^2

note que tu prends f0 << fe, donc f0 # fdes = 50 Hz

cela donne:

A = -969.2
B = 2024.4
C = 1059.2

@+

Vincent


Re: filtre numerique de butterworth

Quoted text here. Click to load it

rq: j'ai considéré fe = 5 kHz, comme dans ton post initial.


Re: filtre numerique de butterworth
Le Tue, 15 Sep 2009 17:13:57 +0200, Vincent Thiernesse a écrit :

Quoted text here. Click to load it

Super , je vais essayer ca  , merci



Re: filtre numerique de butterworth
Il manque des parentheses ou il y en a de trop
 y[2] = 1 / C  * (x[0] + x[2]) + 2 * x[1] +  A* y[0]) +  B * y[1])
est ce que c'est ca ?
 y[2] = 1 / C  * (x[0] + x[2] + 2 * x[1]) +  A* y[0] +  B * y[1]


Re: filtre numerique de butterworth
ok c'est en fait
y[2] = 1 / C  * (x[0] + x[2] + 2 * x[1] +  A* y[0] +  B * y[1])




Re: filtre numerique de butterworth

Quoted text here. Click to load it

tout à fait !!!

si vous avez un doute, vous pouvez remplacer tous les Xn et Yn par 1 et
vérifier l'égalité.

@+

Vincent


Re: filtre numerique de butterworth

snipped-for-privacy@NOt.com...
Quoted text here. Click to load it

Bonjour,

Simple curiosité, ne serait ce pas un signal ECG pour avoir une bande
passante de 10 à 100 Hz?

Cordialement
pf



Re: filtre numerique de butterworth


Le Tue, 15 Sep 2009 10:06:02 +0200, Pierre-François (f5bqp_pfm) a
écrit :

Quoted text here. Click to load it

Non , c'est un signal courant de moteur.



Site Timeline