Bonjour,
j'ai une question qui me perturbe un peu. Je croyais qu'en cascadant un filtre Butterworth 1er ordre (réponse en fréquence H1) avec un 2e ordre (H2), j'obtiendrais la même chose qu'en utilisant un 3e ordre tout seul (H3). Autrement dit je pensais que le filtre équivalent après cascade, c'est-à-dire H12(f) = H1(f).*H2(f) serait égal à H3(f).
Mais à l'évidence ce n'est pas le cas, cf figure attachée obtenue en exécutant le script ci-dessous (pour ceux qui ne veulent pas attendre la validation de la figure)
1. Est-ce qu'on est bien d'accord que c'est équivalent de filtrer un signal d'abord avec H1 puis H2 que de le filtrer directement avec H12?
2. Pourquoi n'est-ce pas équivalent de le filtrer avec H3?
Merci beaucoup pour tout élément de réponse !
Code:fs = 1000; fc = 200; [b1,a1] = butter(1,fc/(fs/2)); [b2,a2] = butter(2,fc/(fs/2)); [b3,a3] = butter(3,fc/(fs/2)); N = 2^12; [H1,f] = freqz(b1,a1,N,fs); H2 = freqz(b2,a2,N,fs); H3 = freqz(b3,a3,N,fs); H12 = H1.*H2; figure; % plot réponse magnitude ax(1) = subplot(211); hold on; plot(f,20*log10(abs(H12))) plot(f,20*log10(abs(H3)),'r') ylim([-12,0]) xlabel('Hz') ylabel('reponse magnitude (dB)') legend('H12','H3') % plot réponse phase ax(2) = subplot(212); hold on; plot(f,angle(H12)*180/pi) plot(f,angle(H3)*180/pi,'r') legend('H12','H3') linkaxes(ax,'x'); xlim([0,250]) ylim([-180,0]) xlabel('Hz') ylabel('reponse phase (deg)')
-----