%iir1.M etude de la cellule du second ordre clear all close all % Definitions des poles (conjugués) et des zéros (réels) disp('Definitions des poles et des zéros') p1= 35/36*exp(j*2*pi*1/10) p2=35/36*exp(-j*2*pi*1/10) z1=1 z2=-1 K=1 % partie recursive % tracé du diagramme de poles p=[p1 p2]; figure(1) polar(angle(p),abs(p),'*r') % calcul du denominateur denHd = conv([1 -p1 ],[1 -p2 ]); numHd = K; % affichage printsys(numHd,denHd,'z') % reponse en frequence f=linspace(0,1/2,2048); % 2048 frequences de calcul [Hd]=freqzz(numHd,denHd,2*pi*f); % calcul de la Reponse en frequence figure(2) subplot(2,1,1) plot(f,abs(Hd)) ylabel('Amplification') zoom on grid subplot(2,1,2) plot(f,180*angle(Hd)/pi) ylabel('Phase en degree') zoom on grid pause; % partie non recursive % et trace du diagramme de poles z=[z1 z2]; polar(angle(z),abs(z),'og') % calcul du numérateur numHn = conv([1 -z1 ],[1 -z2 ]); % affichage %printsys(numHn,1,'z') % reponse en frequence f=linspace(0,1/2,2048); % 2048 frequences de calcul [Hn]=freqzz(numHn,1,2*pi*f); % calcul de la Reponse en frequence figure(2) subplot(2,1,1) plot(f,abs(Hn)) ylabel('Amplification') zoom on grid subplot(2,1,2) plot(f,180*angle(Hn)/pi) ylabel('Phase en degree') zoom on grid pause % la cellule complète % trace du diagramme de poles z=[z1 z2]; polar(angle(z),abs(z),'og') hold on p=[p1 p2]; polar(angle(p),abs(p),'*r') % calcul du denominateur denH = conv([1 -p1 ],[1 -p2 ]) numH = K*conv([1 -z1 ],[1 -z2]) % affichage printsys(numH,denH,'z') % reponse en frequence f=linspace(0,1/2,2048); % 2048 frequences de calcul [H]=freqz(numH,denH,2*pi*f); % calcul de la Reponse en frequence figure subplot(2,1,1) plot(f,abs(H)) ylabel('Amplification') zoom on grid subplot(2,1,2) plot(f,180*angle(H)/pi) ylabel('Phase en degree') zoom on grid break; % filtrage de quelques signaux n = 0:100; fr = 0.1; % 0.1 ou 0.3 x = sin(2*pi*fr*n); y= filter(num,den,x) figure cplot(n,x) hold on cplot(n,y,'g') xlabel('entree en rouge sorite en vert ') carre = (sin(2*pi*0.1*n+0.1)>0)*2-1; carrefiltre= filter(num,den,carre); figure cplot(n,carre) hold on cplot(n,carre_filtre,'g') xlabel('entree en rouge ,sorite en vert ')