filtre numerique de butterworth

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)

formatting link
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.

Reply to
Fred Kap
Loading thread data ...

"Fred Kap" a écrit dans le message de news: snipped-for-privacy@NOt.com...

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.

Reply to
Vincent Thiernesse

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

Reply to
Vincent Thiernesse

"Fred Kap" a écrit dans le message de news: snipped-for-privacy@NOt.com...

Bonjour,

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

Cordialement pf

Reply to
Pierre-François (f5bqp_pfm)

Je te remercie de ta réponse , pourrais tu me donner par exemple les valeurs A et B pour F=50 Hz.

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

Reply to
Fred Kap

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

Non , c'est un signal courant de moteur.

Reply to
Fred Kap

"Fred Kap" a écrit dans le message de news: snipped-for-privacy@NOt.com...

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

Reply to
Vincent Thiernesse

"Vincent Thiernesse" a écrit dans le message de news:4aafa894$0$17759$ snipped-for-privacy@news.orange.fr...

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

Reply to
Vincent Thiernesse

Le Tue, 15 Sep 2009 17:13:57 +0200, Vincent Thiernesse a écrit :

Super , je vais essayer ca , merci

Reply to
Fred Kap

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]

Reply to
Fred Kap

ok c'est en fait y[2] = 1 / C * (x[0] + x[2] + 2 * x[1] + A* y[0] + B * y[1])

Reply to
Fred Kap

"Fred Kap" a écrit dans le message de news: snipped-for-privacy@NOt.com...

tout à fait !!!

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

@+

Vincent

Reply to
Vincent Thiernesse

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.