Está en la página 1de 2

%3era PRACTICA DE PDS

%MEDRANO GOMEZ KATY


%2012200056

%1.Filtar una señal senoidal mediante un filtro de Butterworth

%Desarrollando en matlab

% Definimos el periodo de la señal en un valor de 1/1200


pas=1/1200;
t=0:pas:0.005;

%Definimos la señal
senal=sin(2*pi*6000*t)+5*cos(2*pi*5000*t)+6*sin(2*pi*1000*t);

%Gráfico de la señal
ejet=[0:pas:(length(senal)-1).*pas];
subplot(2,1,1);
plot(ejet,senal);

%Define el rango de los ejes


axis([min(ejet) max(ejet) min(senal) max(senal)]);
xlabel('t(s)');
title('Grafico de la senal a ser Filtrada')

%Espectro de la señal
subplot(5,1,2);
dim=length(senal).*pas;
ejefrec=[0:1/dim:(length(senal)-1)/dim];
spectr=abs(fft(senal));

%Espectro normalizado
spectr=spectr/max(spectr);
plot(ejefrec,spectr);
axis([0 10 0 max(spectr)]);
xlabel('frecuencia(Hz)');
title('Espectro de amplitud de la senal')

%Frecuencia de muestreo
xfrec=1/pas;
%Frecuencia de Nyquist
fs=xfrec/2;

%FILTRO DE BUTTERWORTH DE ORDEN n


wp=[5 20]/fs; %Banda de paso
ws=[1 24]/fs; %Banda eliminada
%Tolerancia de paso
rp=3;
%Tolerancia eliminada
rs=10;

%DISEÑO DEL FILTRO FIR


[n,wn]=buttord(wp,ws,rp,rs);
[b,a]=butter(n,wn); %serie de Butterwortj
[h,f]=freqz(b,a,[],xfrec); %respuesta a la frecuencia de un filtro
digital
subplot(5,1,3);
plot(f,abs(h));
axis([0 10 0 max(spectr)]);
xlabel('f(Hz)');
ylabel('|Hz|');
title('Filtro pasabanda de Butterworth')

%convolución del filtro con la señal


ysig=filter(b,a,senal);

%señal filtrada
subplot(5,1,4);
plot(ejet,ysig);
xlabel('t(s)');
title('Senal Filtrada');

%Espectro de la señal salida


spectr1=abs(fft(ysig)); %valor absoluto de la transformada discreta de
Fourier de la señal filtrada
subplot(5,1,5);

%Espectro normalizado
spectr1=spectr1/max(spectr1);
plot(ejefrec,spectr1);
axis([0 10 0 max(spectr1)]);
xlabel('frecuencia en Hz');
title('espectro de amplitud de la Senal Filtrada');

También podría gustarte