Você está na página 1de 14

INSTITUTO MAUÁ DE TECNOLOGIA

ESCOLA DE ENGENHARIA MAUÁ

PROJETO DE FILTROS IIR

São Caetano do Sul


Novembro de 2010
1-) Indique de forma gráfica qual foi a máscara estabelecida:

Para a comparação entre as ordens mínimas dos filtros utilizou-se uma máscara de um
filtro passa-baixa com os parâmetros abaixo:

Parâmetro Valor
Banda de passagem 4000 Hz
Banda de corte 12000 Hz
Ripple na banda de passagem 5 dB
Atenuação mínima na banda de
40 dB
corte

Na forma gráfica:

|H(ω)|

1
RP = 5
dB

A = 40 dB

ω ω
ω (rad/s)
P S

2-) Forneça uma tabela comparativa indicando a ordem obtida para cada família
de filtros considerando a máscara estabelecida. Note que neste caso a máscara é a
mesma para cada tipo de filtro:

Freqüência
Filtro Ordem
de corte
Butterworth 4 3794,7 Hz
Chebyshev 1 4000,0 Hz
(Ripple na banda de 3
passagem)
Chebyshev 2
3 10674 Hz
(Ripple na banda de corte)
Elíptico 3 4000,0 Hz

No caso do Butterworth, como o ripple é nulo, a ordem necessária é a maior entre os


demais.
3-) Utilizando o comando subplot, plot os pólos e zeros dos filtros: butterworth,
cheby1, cheby2 e elíptico em uma única figura. Indique uma figura com os pólos e
zeros em ‘s’ e uma figura com os pólos e zeros em ‘z’:

O código em MatLab que gera gráficos:


%Definiçao da mascara
fp = 4000; %Hz
fs = 12000; %Hz
Wp = fp*2*pi; %rad/s
Ws = fs*2*pi; %rad/s
Aten = 100; %Atenuacao linear
Rs = 20*log10(Aten); %Atenuaçao convertida em dB
Rp = 5; %Aumento do ripple para evidenciar seus efeitos

Fs = 40000;

%Determinacao da ordem dos filtros


[N_bu, Wn_bu] = buttord(Wp, Ws, Rp, Rs, 's');
[N_c1, Wn_c1] = cheb1ord(Wp, Ws, Rp, Rs, 's');
[N_c2, Wn_c2] = cheb2ord(Wp, Ws, Rp, Rs, 's');
[N_el, Wn_el] = ellipord(Wp, Ws, Rp, Rs, 's');

%Determinacao do filtro em s
[B_bu, A_bu] = butter(N_bu, Wn_bu, 's');
[B_c1, A_c1] = cheby1(N_c1, Rp, Wn_c1, 's');
[B_c2, A_c2] = cheby2(N_c2, Rs, Wn_c2, 's');
[B_el, A_el] = ellip(N_el, Rp, Rs, Wn_el, 's');

figure(3);subplot(2,2,1);pzmap(B_bu,A_bu);title('Plano s - Filtro Butterworth');


figure(3);subplot(2,2,2);pzmap(B_c1,A_c1);title('Plano s - Filtro Chebyshev I');
figure(3);subplot(2,2,3);pzmap(B_c2,A_c2);title('Plano s - Filtro Chebyshev II');
figure(3);subplot(2,2,4);pzmap(B_el,A_el);title('Plano s - Filtro Eliptico');

%Determinacao do filtro em z
[Bd_bu,Ad_bu] = bilinear(B_bu, A_bu, Fs);
[Bd_c1,Ad_c1] = bilinear(B_c1, A_c1, Fs);
[Bd_c2,Ad_c2] = bilinear(B_c2, A_c2, Fs);
[Bd_el,Ad_el] = bilinear(B_el, A_el, Fs);

figure(4);subplot(2,2,1);zplane(Bd_bu,Ad_bu);title('Plano z - Filtro Butterworth');


figure(4);subplot(2,2,2);zplane(Bd_c1,Ad_c1);title('Plano z - Filtro Chebyshev I');
figure(4);subplot(2,2,3);zplane(Bd_c2,Ad_c2);title('Plano z - Filtro Chebyshev II');
figure(4);subplot(2,2,4);zplane(Bd_el,Ad_el);title('Plano z - Filtro Eliptico');

Este código será utilizado no início dos demais códigos que faremos ao longo do
trabalho e não repetiremos.
Localização dos pólos e zeros no plano s:

Localização dos pólos e zeros no plano z:


4-) Um ponto de comparação interessante é a resposta impulsiva do filtro.
Utilizando o comando impz plot a resposta impulsiva, em ‘z’, de cada uma das
famílias.

O código em MatLab que gera os gráficos:


%Foi utilizado o código do início do trabalho

%Resposta ao impulso
[H_bu,T_bu] = impz(Ad_bu,Bd_bu);
[H_c1,T_c1] = impz(Ad_c1,Bd_c1);
[H_c2,T_c2] = impz(Ad_c2,Bd_c2);
[H_el,T_el] = impz(Ad_el,Bd_el);

%Plotagem
figure(1);SUBPLOT(4,1,1);plot(T_bu, H_bu);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta impulsiva - Filtro
Butterworth');
figure(1);SUBPLOT(4,1,2);plot(T_c1, H_c1);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta impulsiva - Filtro Chebyshev
I');
figure(1);SUBPLOT(4,1,3);plot(T_c2, H_c2);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta impulsiva - Filtro Chebyshev
II');
figure(1);SUBPLOT(4,1,4);plot(T_el, H_el);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta impulsiva - Filtro Eliptico');

Resposta impulsiva dos filtros passa-baixa:

5-) Um ponto de comparação interessante é a resposta ao degrau do filtro.


Utilizando o comando dstep plot a resposta ao degrau, em ‘z’, de cada uma das
famílias.

O código em MatLab que gera os gráficos:


%Foi utilizado o código do início do trabalho

%Resposta ao degrau
[Y_bu,X_bu] = dstep(Ad_bu,Bd_bu);
[Y_c1,X_c1] = dstep(Ad_c1,Bd_c1);
[Y_c2,X_c2] = dstep(Ad_c2,Bd_c2);
[Y_el,X_el] = dstep(Ad_el,Bd_el);
%Plotagem
figure(1);SUBPLOT(2,2,1);plot(Y_bu);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta ao degrau - Filtro
Butterworth');
figure(1);SUBPLOT(2,2,2);plot(Y_c1);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta ao degrau - Filtro Chebyshev
I');
figure(1);SUBPLOT(2,2,3);plot(Y_c2);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta ao degrau - Filtro Chebyshev
II');
figure(1);SUBPLOT(2,2,4);plot(Y_el);grid
on;ylabel('Amplitude');xlabel('Amostras');title('Resposta ao degrau - Filtro Eliptico');

Resposta ao degrau dos filtros passa-baixa:

6-) Repita os dois últimos itens analisando as respostas em ‘s’e compare os


resultados.

O código em MatLab que gera os gráficos:


%Foi utilizado o código do início do trabalho

%Monta a funçao de transferencia


sys_bu = tf(B_bu, A_bu);
sys_c1 = tf(B_c1, A_c1);
sys_c2 = tf(B_c2, A_c2);
sys_el = tf(B_el, A_el);

%Resposta ao degrau
[Y_bu,X_bu] = step(sys_bu);
[Y_c1,X_c1] = step(sys_c1);
[Y_c2,X_c2] = step(sys_c2);
[Y_el,X_el] = step(sys_el);

%Resposta ao impulso
[H_bu,T_bu] = impulse(sys_bu);
[H_c1,T_c1] = impulse(sys_c1);
[H_c2,T_c2] = impulse(sys_c2);
[H_el,T_el] = impulse(sys_el);

%Conversao de uma escala de tempo para amostras em x


X_bu = Fs * X_bu;
X_c1 = Fs * X_c1;
X_c2 = Fs * X_c2;
X_el = Fs * X_el;

T_bu = Fs * T_bu;
T_c1 = Fs * T_c1;
T_c2 = Fs * T_c2;
T_el = Fs * T_el;

%Plotagem do degrau
figure(1);SUBPLOT(2,2,1);plot(Y_bu);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta ao degrau - Filtro Butterworth');
figure(1);SUBPLOT(2,2,2);plot(Y_c1);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta ao degrau - Filtro Chebyshev I');
figure(1);SUBPLOT(2,2,3);plot(Y_c2);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta ao degrau - Filtro Chebyshev II');
figure(1);SUBPLOT(2,2,4);plot(Y_el);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta ao degrau - Filtro Eliptico');

%Plotagem do impulso
figure(2);SUBPLOT(2,2,1);plot(T_bu, H_bu);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta impulsiva - Filtro Butterworth');
figure(2);SUBPLOT(2,2,2);plot(T_c1, H_c1);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta impulsiva - Filtro Chebyshev I');
figure(2);SUBPLOT(2,2,3);plot(T_c2, H_c2);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta impulsiva - Filtro Chebyshev II');
figure(2);SUBPLOT(2,2,4);plot(T_el, H_el);grid
on;ylabel('Amplitude');xlabel('t');title('Resposta impulsiva - Filtro Eliptico');

Resposta ao impulso dos filtros passa-baixa no domínio s:


Resposta ao degrau dos filtros passa-baixa no domínio s:

7-) Utilizando o comando hold, plot em um único gráfico todas as cinco respostas
de magnitude das famílias estudadas, para que uma comparação possa ser feita.
Crie uma segunda figura para que a resposta em fase possa ser comparada.

O código em MatLab que gera os gráficos:


%Foi utilizado o código do início do trabalho

%Resposta em frequencia
[Y_bu,X_bu] = freqz(Ad_bu,Bd_bu);
[Y_c1,X_c1] = freqz(Ad_c1,Bd_c1);
[Y_c2,X_c2] = freqz(Ad_c2,Bd_c2);
[Y_el,X_el] = freqz(Ad_el,Bd_el);

%Separa módulo em escala linear


M_bu = abs(Y_bu);
M_c1 = abs(Y_c1);
M_c2 = abs(Y_c2);
M_el = abs(Y_el);

%Eixo x em frequencia
x_axis = linspace(0,size(M_bu,1),size(M_bu,1));
x_axis = (Fs/2)*x_axis/size(M_bu,1);

figure(5);plot(x_axis,M_bu, 'b');grid on;ylabel('Amplitude linear');xlabel('Frequencia


(Hz)');title('Magnitude da resposta em frequencia -- Linear');hold on;
figure(5);plot(x_axis,M_c1, 'r');grid on;ylabel('Amplitude linear');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Linear');hold on;
figure(5);plot(x_axis,M_c2, 'g');grid on;ylabel('Amplitude linear');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Linear');hold on;
figure(5);plot(x_axis,M_el, 'y');grid on;ylabel('Amplitude linear');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Linear');hold off;
figure(5);legend('Passa-baixa Butterworth', 'Passa-baixa Chebyshev I', 'Passa-baixa
Chebyshev II', 'Passa-baixa Eliptico');

%Separa fase
A_bu = unwrap(angle(Y_bu))*180/pi;
A_c1 = unwrap(angle(Y_c1))*180/pi;
A_c2 = unwrap(angle(Y_c2))*180/pi;
A_el = unwrap(angle(Y_el))*180/pi;

figure(7);plot(x_axis,A_bu, 'b');grid on;ylabel('Fase (Graus)');xlabel('Frequencia


(Hz)');title('Fase da resposta em frequencia');hold on;
figure(7);plot(x_axis,A_c1, 'r');grid on;ylabel('Fase (Graus)');xlabel('Frequencia
(Hz)');title('Fase da resposta em frequencia');hold on;
figure(7);plot(x_axis,A_c2, 'g');grid on;ylabel('Fase (Graus)');xlabel('Frequencia
(Hz)');title('Fase da resposta em frequencia');hold on;
figure(7);plot(x_axis,A_el, 'y');grid on;ylabel('Fase (Graus)');xlabel('Frequencia
(Hz)');title('Fase da resposta em frequencia');hold off;
figure(7);legend('Passa-baixa Butterworth', 'Passa-baixa Chebyshev I', 'Passa-baixa
Chebyshev II', 'Passa-baixa Eliptico');

%Zoom na regiao de passagem


figure(8);plot(x_axis,M_bu, 'b');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([0 4500 -10
5]);hold on;
figure(8);plot(x_axis,M_c1, 'r');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([0 4500 -10
5]);hold on;
figure(8);plot(x_axis,M_c2, 'g');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([0 4500 -10
5]);hold on;
figure(8);plot(x_axis,M_el, 'y');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([0 4500 -10
5]);hold off;
figure(8);legend('Passa-baixa Butterworth', 'Passa-baixa Chebyshev I', 'Passa-baixa
Chebyshev II', 'Passa-baixa Eliptico');

%Zoom na regiao de atenuação


figure(9);plot(x_axis,M_bu, 'b');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([10000 14000 -50
-30]);hold on;
figure(9);plot(x_axis,M_c1, 'r');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([10000 14000 -50
-30]);hold on;
figure(9);plot(x_axis,M_c2, 'g');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([10000 14000 -50
-30]);hold on;
figure(9);plot(x_axis,M_el, 'y');grid on;ylabel('Amplitude dB');xlabel('Frequencia
(Hz)');title('Magnitude da resposta em frequencia -- Logaritmica');axis([10000 14000 -50
-30]);hold off;
figure(9);legend('Passa-baixa Butterworth', 'Passa-baixa Chebyshev I', 'Passa-baixa
Chebyshev II', 'Passa-baixa Eliptico');

Resposta em freqüência (módulo) para os filtros:

Resposta em freqüência (fase) para os filtros:


8-) Repita o item anterior criando uma figura onde apenas região de passagem seja
apresentada em detalhe (zoom). Faça o mesmo para a região de atenuação.
Compare os valores com a máscara especificada.

O código em MatLab que gera os gráficos está no item anterior.

Ampliação da banda de passagem:

Ampliação da banda de atenuação:


9-) Crie um sinal artificial s_teste_p de duração 100ms, composto pela soma de três
harmônicas de freqüências: 1kHz,2kHz e 3kHz e, um segundo sinal s_teste_a de
duração 100ms, composto pela soma de três harmônicas de freqüências:
13kHz,15kHz e 19kHz. Considerando que a freqüência de amostragem é de 40kHz.
10-) Crie um gráfico contendo o módulo da transformada de Fourier para os sinais
criados e compare com a transformada dos sinais após serem filtrados em cada um
dos filtros. Repita o procedimento analisando o comportamento no domínio do
tempo:

Código Matlab:
clc;

Fs = 40000; %Freq. de amostragem

tmax = 0.1; %Segundos

t = linspace(0, tmax, tmax*Fs);

%Sinais de teste
s_teste_p = sin(2*pi*t*1000) + sin(2*pi*t*2000) + sin(2*pi*t*3000);
s_teste_a = sin(2*pi*t*13000) + sin(2*pi*t*15000) + sin(2*pi*t*19000);

%--------------------------------------------------------------------------
%Passa-alta
%--------------------------------------------------------------------------

%Definiçao da mascara
fp = 4000; %Hz
fs = 12000; %Hz
fp = (Fs/pi)*tan(pi*fp/Fs) %Pre-warping
fs = (Fs/pi)*tan(pi*fs/Fs) %Pre-warping
Wp = fp*2*pi; %rad/s
Ws = fs*2*pi; %rad/s
Aten = 100; %Atenuacao linear
Rs = 20*log10(Aten); %Atenuaçao convertida em dB
Rp = 5; %Aumento do ripple para evidenciar seus efeitos

%Determinacao da ordem dos filtros


[N_bu, Wn_bu] = buttord(Wp, Ws, Rp, Rs, 's');
[N_c1, Wn_c1] = cheb1ord(Wp, Ws, Rp, Rs, 's');
[N_c2, Wn_c2] = cheb2ord(Wp, Ws, Rp, Rs, 's');
[N_el, Wn_el] = ellipord(Wp, Ws, Rp, Rs, 's');
%Determinacao do filtro em s
[B_bu, A_bu] = butter(N_bu, Wn_bu, 's');
[B_c1, A_c1] = cheby1(N_c1, Rp, Wn_c1, 's');
[B_c2, A_c2] = cheby2(N_c2, Rs, Wn_c2, 's');
[B_el, A_el] = ellip(N_el, Rp, Rs, Wn_el, 's');

%Determinacao do filtro em z
[Ad_bu,Bd_bu] = bilinear(B_bu, A_bu, Fs);
[Ad_c1,Bd_c1] = bilinear(B_c1, A_c1, Fs);
[Ad_c2,Bd_c2] = bilinear(B_c2, A_c2, Fs);
[Ad_el,Bd_el] = bilinear(B_el, A_el, Fs);

%Filtrando sinal p
s_teste_p_filt_bu = filter(Ad_bu,Bd_bu, s_teste_p);
s_teste_p_filt_c1 = filter(Ad_c1,Bd_c1, s_teste_p);
s_teste_p_filt_c2 = filter(Ad_c2,Bd_c2, s_teste_p);
s_teste_p_filt_el = filter(Ad_el,Bd_el, s_teste_p);

%Filtrando sinal p
s_teste_a_filt_bu = filter(Ad_bu,Bd_bu, s_teste_a);
s_teste_a_filt_c1 = filter(Ad_c1,Bd_c1, s_teste_a);
s_teste_a_filt_c2 = filter(Ad_c2,Bd_c2, s_teste_a);
s_teste_a_filt_el = filter(Ad_el,Bd_el, s_teste_a);

%Eixo x
x_axis = linspace(-size(s_teste_a,2)/2,size(s_teste_a,2)/2,size(s_teste_a,2));
x_axis = Fs*x_axis/size(s_teste_a,2);

%Espectros
figure(1);SUBPLOT(5,2,1);stem(x_axis,abs(fftshift(fft(s_teste_p))));title('Sinal P
original');axis([-Inf,Inf,0,2000]);grid on;ylabel('Amplitude');xlabel('Frequencia
(Hz)');
figure(1);SUBPLOT(5,2,3);stem(x_axis,abs(fftshift(fft(s_teste_p_filt_bu))));title('Sinal
P filtrado por Passa-baixa Butterworth');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,5);stem(x_axis,abs(fftshift(fft(s_teste_p_filt_c1))));title('Sinal
P filtrado por Passa-baixa Chebyshev I');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,7);stem(x_axis,abs(fftshift(fft(s_teste_p_filt_c2))));title('Sinal
P filtrado por Passa-baixa Chebyshev II');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,9);stem(x_axis,abs(fftshift(fft(s_teste_p_filt_el))));title('Sinal
P filtrado por Passa-baixa Eliptico');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');

%No tempo
figure(2);SUBPLOT(5,2,1);plot(t,s_teste_p);title('Sinal P original');axis([0,0.005,-
3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) -- Limitado');
figure(2);SUBPLOT(5,2,3);plot(t,s_teste_p_filt_bu);title('Sinal P filtrado por Passa-
baixa Butterworth');axis([0,0.005,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s)
-- Limitado');
figure(2);SUBPLOT(5,2,5);plot(t,s_teste_p_filt_c1);title('Sinal P filtrado por Passa-
baixa Chebyshev I');axis([0,0.005,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s)
-- Limitado');
figure(2);SUBPLOT(5,2,7);plot(t,s_teste_p_filt_c2);title('Sinal P filtrado por Passa-
baixa Chebyshev II');axis([0,0.005,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s)
-- Limitado');
figure(2);SUBPLOT(5,2,9);plot(t,s_teste_p_filt_el);title('Sinal P filtrado por Passa-
baixa Eliptico');axis([0,0.005,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) --
Limitado');

%--------------------------------------------------------------------------
%Passa-alta
%--------------------------------------------------------------------------

%Definiçao da mascara
fp = 12000; %Hz
fs = 4000; %Hz
fp = (Fs/pi)*tan(pi*fp/Fs) %Pre-warping
fs = (Fs/pi)*tan(pi*fs/Fs) %Pre-warping
Wp = fp*2*pi; %rad/s
Ws = fs*2*pi; %rad/s
Aten = 100; %Atenuacao linear
Rs = 20*log10(Aten); %Atenuaçao convertida em dB
Rp = 5; %Aumento do ripple para evidenciar seus efeitos
%Determinacao da ordem dos filtros
[N_bu, Wn_bu] = buttord(Wp, Ws, Rp, Rs, 's');
[N_c1, Wn_c1] = cheb1ord(Wp, Ws, Rp, Rs, 's');
[N_c2, Wn_c2] = cheb2ord(Wp, Ws, Rp, Rs, 's');
[N_el, Wn_el] = ellipord(Wp, Ws, Rp, Rs, 's');

%Determinacao do filtro em s
[B_bu, A_bu] = butter(N_bu, Wn_bu, 'high', 's');
[B_c1, A_c1] = cheby1(N_c1, Rp, Wn_c1, 'high', 's');
[B_c2, A_c2] = cheby2(N_c2, Rs, Wn_c2, 'high', 's');
[B_el, A_el] = ellip(N_el, Rp, Rs, Wn_el, 'high', 's');

%Determinacao do filtro em z
[Ad_bu,Bd_bu] = bilinear(B_bu, A_bu, Fs);
[Ad_c1,Bd_c1] = bilinear(B_c1, A_c1, Fs);
[Ad_c2,Bd_c2] = bilinear(B_c2, A_c2, Fs);
[Ad_el,Bd_el] = bilinear(B_el, A_el, Fs);

%Filtrando sinal p
s_teste_p_filt_bu = filter(Ad_bu,Bd_bu, s_teste_p);
s_teste_p_filt_c1 = filter(Ad_c1,Bd_c1, s_teste_p);
s_teste_p_filt_c2 = filter(Ad_c2,Bd_c2, s_teste_p);
s_teste_p_filt_el = filter(Ad_el,Bd_el, s_teste_p);

%Filtrando sinal p
s_teste_a_filt_bu = filter(Ad_bu,Bd_bu, s_teste_a);
s_teste_a_filt_c1 = filter(Ad_c1,Bd_c1, s_teste_a);
s_teste_a_filt_c2 = filter(Ad_c2,Bd_c2, s_teste_a);
s_teste_a_filt_el = filter(Ad_el,Bd_el, s_teste_a);

%Eixo x
x_axis = linspace(-size(s_teste_a,2)/2,size(s_teste_a,2)/2,size(s_teste_a,2));
x_axis = Fs*x_axis/size(s_teste_a,2);

%Espectros
figure(1);SUBPLOT(5,2,2);stem(x_axis,abs(fftshift(fft(s_teste_a))));title('Sinal A
original');axis([-Inf,Inf,0,2000]);grid on;ylabel('Amplitude');xlabel('Frequencia
(Hz)');
figure(1);SUBPLOT(5,2,4);stem(x_axis,abs(fftshift(fft(s_teste_a_filt_bu))));title('Sinal
A filtrado por Passa-alta Butterworth');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,6);stem(x_axis,abs(fftshift(fft(s_teste_a_filt_c1))));title('Sinal
A filtrado por Passa-alta Chebyshev I');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,8);stem(x_axis,abs(fftshift(fft(s_teste_a_filt_c2))));title('Sinal
A filtrado por Passa-alta Chebyshev II');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');
figure(1);SUBPLOT(5,2,10);stem(x_axis,abs(fftshift(fft(s_teste_a_filt_el))));title('Sina
l A filtrado por Passa-alta Eliptico');axis([-Inf,Inf,0,2000]);grid
on;ylabel('Amplitude');xlabel('Frequencia (Hz)');

%No tempo
figure(2);SUBPLOT(5,2,2);plot(t,s_teste_a);title('Sinal A original');axis([0,0.001,-
3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) -- Limitado');
figure(2);SUBPLOT(5,2,4);plot(t,s_teste_a_filt_bu);title('Sinal A filtrado por Passa-
alta Butterworth');axis([0,0.001,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) --
Limitado');
figure(2);SUBPLOT(5,2,6);plot(t,s_teste_a_filt_c1);title('Sinal A filtrado por Passa-
alta Chebyshev I');axis([0,0.001,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) --
Limitado');
figure(2);SUBPLOT(5,2,8);plot(t,s_teste_a_filt_c2);title('Sinal A filtrado por Passa-
alta Chebyshev II');axis([0,0.001,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s)
-- Limitado');
figure(2);SUBPLOT(5,2,10);plot(t,s_teste_a_filt_el);title('Sinal A filtrado por Passa-
alta Eliptico');axis([0,0.001,-3,3]);grid on;ylabel('Amplitude');xlabel('Tempo (s) --
Limitado');

Comparação entre dois sinais de teste (A e P) e as resposta de cada filtro para cada sinal
em relação ao espectro:
Comparação entre dois sinais de teste (A e P) e as resposta de cada filtro para cada sinal
em relação ao tempo:

Você também pode gostar