Bonjour à tous,
J'ai un soucis dans l'écriture de boucles concernant un filtre de Butterworth.
Ce filtre s'écrit mathématiquement :
On note qu'avec Matlab on va décaller de 1 chaque coefficient puisque les tableaux commencent à 1 dans ce logiciel.y[n] = k ( e[0]*x[0] +...+ e[N]*x(n-N) ) - ( s[1]*y[1] +...+ s[N]*y[n-N] )
Je possède stockés dans des tableaux le signal non filtré x, et les coefficients e et s. N est l'ordre du filtre, et je note nb le nombre de composantes de x (et donc de y).
Pour écrire ce calcul, j'ai traité ce sujet comme une récurrence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Initialisation for i=1:nb+1 y(i)=x(i)*k*e(1); endLe problème c'est que dans ces boucles, en plus du fait que je ne suis pas sûr de leur validité, c'est que je ne traite pas les effets de "bords" où l'indice i-j=<0 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Hérédité for i=1:nb+1 for j=2:N+1 y(i)=y(i) + k*e(j)*x(i-j) - s(j)*y(i-j) ; end end
Pourriez-vous m'aider ?
Merci d'avance !
Apeth
Partager