Filtre passe bande butterworth matlab

Fermé
Ma Ma Matlaaaaaaaaaaaaaaab - 1 déc. 2009 à 10:59
 dfasf - 28 mai 2010 à 09:56
Bonjour,
Je dois réaliser le filtrage de données sur Matlab, pour ce j'aimerais réaliser un filtre passe bande à partir d'un filtre de type butterworth. Voici ce que j'ai réalisé mais ca ne fonctionne pas! Quelqu'un pourrait il m'aider? C'est la première fois que j'utilise matlab donc je ne suis pas sur que c'est comme cela qu'il faut proceder! Est-ce qu'il y a un moyen plus simple ?

Merci d'avance;
Nico

%FILTRE BUTTER

f_c1=0.1;
f_c2=0.1;
f_c3=0.1;
f_c4=0.1;
f_c5=0.9;
f_c6=0.9;
f_c7=0.9;
f_c8=0.9;
%fréquence de coupure

w_c1=f_c1/(fe/2);
w_c2=f_c2/(fe/2);
w_c3=f_c3/(fe/2);
w_c4=f_c4/(fe/2);
w_c5=f_c5/(fe/2);
w_c6=f_c6/(fe/2);
w_c7=f_c7/(fe/2);
w_c8=f_c8/(fe/2);

% On cherche la fréquence normalisé car c'est celle-ci qui est utilisée ds le buffer
% The cutoff frequency Wn must be 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate => fcoupure/ (Fechantillonnage/2).

%%Butter
[B,A]= butter(3,w_c1,'low');
[C,D]= butter(3,w_c2,'low');
[E,F]= butter(3,w_c3,'low');
[G,H]= butter(3,w_c4,'low');
%[B,A]= butter(ordre du filtre,Wn,type);


y1=filtfilt(B,A,z(:,1))
y2=filtfilt(C,D,z(:,2));
y3=filtfilt(E,F,z(:,3));
y4=filtfilt(G,H,z(:,4));
% je filtre une première fois les données avec un filtre butterworth passe bas

[I,J]=butter(3,y1,'high');
[K,L]=butter(3,y2,'high');
[M,N]=butter(3,y3,'high');
[O,P]=butter(3,y4,'high');

y5=filtfilt(I,J,z(:,1))
y6=filtfilt(K,L,z(:,1))
y7=filtfilt(M,N,z(:,1))
y8=filtfilt(O,P,z(:,1))
% Je refiltre les données obtenues "apres filtrage passe bas" avec un butterworth passe haut!
Voici le message d'erreur qu'il affiche :
??? Error using ==> butter at 41
Wn must be a one or two element vector.
A voir également:

1 réponse

je sais pas
0