%Systemes Lineaires Continus %Filtrage Analogique %Convolution, Transformee de Fourier et Filtrage: %------------------------------------------------ %Trace de la fonction porte : %**************************** %On trace la fonction porte de largeur T=5 avec un pas de Ts=0.01 clear t=-20:0.01:20 x=abs(t)<2.5 plot(t,x) %Trace de la fonction H ( f ) : %****************************** f=linspace(-2.5,2.5,length(t)) H=abs(f)<0.2 plot(f,H) %Trace de X ( f ) : %****************** X=fftshift(0.01*fft(x)) plot(f,abs(X)) axis([ -2 2 0 5 ]) %Trace de Y ( f ) : %****************** Y=H.*X plot(f,abs(Y)) axis([ -2 2 0 5 ]) %Trace de y ( t ) : %****************** y=ifft(Y) plot(t,abs(y)) %Réponse pour différentes fréquences de coupure fc=1/T: %****************************************************** T=[5 10 20 30 40] for i=1:1:5 H=(abs(f)<1/T(i)) Y=X.*H plot(f,abs(Y),'b') y=ifft(Y) plot(t,y,'r') axis([-2 2 0 5]) end; %Quand la fréquence de coupure augmente, le taux d'ondulation du signal de sortie aussi. %Le signal de sortie devient identique au signal d'entrée:le signal porte. %Filtres reels: %-------------- %Domaine temporel: %***************** clear t=linspace(0,1,512) f1=5 f2=20 f3=35 x=sin(2*pi*f1.*t)+sin(2*pi*f2.*t)+sin(2*pi*f3.*t) %Tracé de x(t) dans le domaine temporel: %*************************************** plot(t,x,'r') xlabel('Temps en secondes') ylabel('Signal x') title('Représentation temporelle du signal x') %Calcul de la transformée de fourier de x: %***************************************** X=fftshift(1/512*fft(x)) %Filtre de Tchebytchev: %---------------------- %domaine fréquentiel: %******************** f=linspace(-256,256,512) %pulsation: %********** w=2*pi*f %Calcul des coefficients du filtre de Tchebytchev entre 10Hz et 30 Hz: %********************************************************************* [b,a]=cheby1_asi(4,0.5,[2*pi*10 2*pi*30],'bandpass','s') %Représentation du filtre de Chebychev d'ordre 8 entre 0 et 40Hz: %**************************************************************** H=freqs_asi(b,a,w) plot(f,H,'b') axis([0 40 -1 1]) %tracé de la sortie y(t)=x(t)*h(t): %********************************** %D'après le théorème de plancherel, on sait que Y(f)=X(f)H(f), on peut donc en déduire y(t), transformée inverse de Y(f). Y=H.*X y=abs(ifft(Y)/Ts) %Représentation de x et y dans le domaine temporel: %************************************************** plot(t,x,'r') hold on plot(t,y,'b') title('Représentation des signaux d'entrée (rouge) et de sortie (bleue)') xlabel('Temps en s') %représentation de H: %******************** plot(f,abs(H),'b') title('Transformée de Fourier de la fonction de transfert') xlabel('Fréquence en Hz') ylabel('amplitude') axis([0 40 0 1]) %Représentation de X, et Y dans le domaine fréquentiel: %****************************************************** subplot(2,1,1) plot(f,abs(X),'b') axis([0 40 0 1]) title('Transformée de Fourier du signal d'entrée') xlabel('Fréquence en Hz') ylabel('amplitude') subplot(2,1,2) plot(f,abs(Y),'b') axis([0 40 0 1]) title('Transformée de Fourier du signal de sortie') xlabel('Fréquence en Hz') ylabel('amplitude') %Grace au filtre, certaines hautes fréquences ont été parfaitement atténuées. %Filtre de Butterworth: %---------------------- %Calcule de x(t): %**************** %domaine temporel: %***************** t=linspace(0,1,Fs) f1=5 f2=20 f3=35 x=sin(2*pi*f1.*t)+sin(2*pi*f2.*t)+sin(2*pi*f3.*t) %Tracé de x(t) dans le domaine temporel: %*************************************** plot(t,x,'r') xlabel('Temps en secondes') ylabel('Signal x') title('Représentation temporelle du signal x') %Calcul de la transformée de fourier de x: %***************************************** X=fftshift(1/Fs*fft(x)); %Filtre de butterworth d'ordre 8: %******************************** %domaine fréquentiel: %******************** f=linspace(-256,256,512) %pulsation: %********** w=2*pi*f %Calcul des coefficients du filtre de Butterworth de fréquence de coupure fc=20Hz: %********************************************************************************* [b,a]=butter_asi(4,[2*pi*10 2*pi*30],'bandpass','s') %Représentation du filtre de Butterworth d'ordre 8 entre 0 et 40Hz: %****************************************************************** H=freqs_asi(b,a,w) plot(f,H,'b') axis([0 40 -1 1]) %tracé de la sortie y(t)=x(t)*h(t): %********************************** %D'après le théorème de plancherel, on sait que Y(f)=X(f)H(f), on peut donc en déduire y(t), transformée inverse de Y(f). Y=H.*X y=abs(ifft(Y)/Ts) %Représentation de x et y dans le domaine temporel: %************************************************** plot(t,x,'r') hold on plot(t,y,'b') title('Représentation des signaux d'entrée (rouge) et de sortie (bleue)') xlabel('Temps en s') %représentation de H: %******************** plot(f,abs(H),'b') title('Transformée de Fourier de la fonction de transfert') xlabel('Fréquence en Hz') ylabel('amplitude') axis([0 40 0 1]) %Représentation de X, et Y dans le domaine fréquentiel: %****************************************************** subplot(2,1,1) plot(f,abs(X),'b') axis([0 40 0 1]) title('Transformée de Fourier du signal d'entrée') xlabel('Fréquence en Hz') ylabel('amplitude') subplot(2,1,2) plot(f,abs(Y),'b') axis([0 40 0 1]) title('Transformée de Fourier du signal de sortie') xlabel('Fréquence en Hz') ylabel('amplitude')