Bonjour,
Je me pose une question. Admettons que j'ai un signal qui a été filtré (fonction "filter" de Matlab) avec un filtre passe-bas sans gain dont les coefficients sont les suivants:
Je connais ces coefficients, je connais le signal filtré, ce que je cherche c'est le signal original. Donc je dois trouver les coefficients du filtre passe-haut actif dont les réponses en magnitude et phase sont les inverses de celle de mon passe-bas, pour compenser à la fois l'atténuation et le déphasage. Si je fais ça:Code:b = [0.0127, 0, 0.0127]; a = [1, -0.9747];
... on voit qu'en tout cas entre 0 et 20 Hz la réponse de mon filtre h_inv est bien l'inverse de celle de h, autant en phase qu'en magnitude. Mais mon filtre est instable (actif passe-haut). Et donc quand j'essaie de l'utiliser sur mon signal filtré pour essayer de retrouver l'original, j'obtiens des valeurs infinies...Code:Fe = 1000; % fréquence d'échantillonnage f = (0:1/10000:20); % vecteur de fréquences. La bande d'intéret de mon signal est entre 0 et 20 Hz h = freqz(b, a, f, Fe); % réponse fréquentielle h_inv = 1./h; [b_inv, a_inv] = invfreqz(h_inv, 2*pi*f/Fe, length(b)-1, length(a)-1); figure; subplot(211); plot(f, abs(h)); subplot(212); plot(f, angle(h)); figure; subplot(211); plot(f, abs(h_inv)); subplot(212); plot(f, angle(h_inv));
Ma question est: comment faire pour retrouver ce signal original? Est-il possible de rentre mon filtre h_inv stable sans modifier ses réponses en amplitude et en phase entre 0 et 20 Hz ?Code:original_reconstruit = filter(b_inv, a_inv, signal_filtre);
Merci énormément de toute aide.
-----