Filtros Digitais - Filtro FIR Passa-altas em MatLab - Aquela Questão é o que você estava procurando

sexta-feira, 14 de setembro de 2018

Textual description of firstImageUrl

Filtros Digitais - Filtro FIR Passa-altas em MatLab

Filtro Digital FIR Passa-altas com Implementação em Matlab

Questão: Um filtro discreto ideal passa-altas com fase linear tem a seguinte resposta ao impulso:

$$\Large{
h_{HP}[n]=\begin{cases}
     1 - \dfrac{\omega_c}{\pi}, & para~n = 0\\
     -\dfrac{sen(\omega_c n)}{\pi n}, & para~n \neq 0
\end{cases}}
$$

onde $\omega_c$ é a frequência de corte discreta do filtro. Usando Matlab, mostre a resposta em magnitude de um filtro passa-altas FIR obtido truncando-se a resposta do filtro ideal acima, de comprimento $N = 2M + 1$ (ou seja, $ -M \leqslant n \leqslant M$ ). Obtenha o resultado usando os valores $M = 5$ e $M = 10$. Comente os resultados obtidos.

Resposta:
(A resposta apresentada aqui, pode não estar 100% correta, mas certamente pode ser proveitosa para alguns)

Código em MatLab para $M = 5,~$ $M = 10,~$ $~M = 100~$ e $\omega_{c} = 0.5\pi $:

%%  == Codigo - Filtro FIR Janela retangular ==  %%
%             Aluno: Cleber Gobira                %
%   Disciplina: Processamento Digital de Sinais   %
%%  ===========================================  %%

M = 5; % Tamanho da janela
wc = 0.5*pi;
n = 1:M 
h0 = 1 - (wc)/pi
haux = (-1./(n.*pi)).*sin(wc.*n) %Impulse Response h[n] p/ Filtro P. Alta
h1 = [fliplr(haux) h0 haux] %Vetor com os coeficientes do filtro

M1 = 10; % Tamanho da janela
n = 1:M1 
h0 = 1 - (wc)/pi
haux = (-1./(n.*pi)).*sin(wc.*n) %Impulse Response h[n] p/ Filtro P. Alta
h2 = [fliplr(haux) h0 haux] %Vetor com os coeficientes do filtro

M2 = 100; % Tamanho da janela
n = 1:M2
h0 = 1 - (wc)/pi
haux = (-1./(n.*pi)).*sin(wc.*n)%Impulse Response h[n] p/ Filtro P. Alta
h3 = [fliplr(haux) h0 haux] %Vetor, coeficientes do filtro, fliplr invert vetor

plotall = fvtool(h1,1,h2,1,h3,1);
legend(plotall,'Janela M=5','Janela M=10','Janela M=100')
title('Resposta em Magnitude (Fitro FIR, Janela Retangular, \omega_{c}=0.5\pi)');


Clique na imagem para melhor visualização.
Filtro FIR para  3 valores de M.
Figura 1 - Filtro passa-baixas FIR com janelamento retangular para M = 5, 10 e 100.

Como a janela $w[n]$ tem comprimento finito igual a M, sua resposta em frequência é uma sinc. A região de pico central (lóbulo principal) tem largura proporcional a 1/M e os lóbulos adjacentes com pesos menores. A convolução entre a janela e o filtro ideal gera uma versão da resposta ideal, mas com algumas distorções (ondulações).

A largura da banda de transição é proporcional a 1/M. Os lóbulos laterais produzem ondulações que têm forma similar tanto na banda de passagem quanto na banda de rejeição. Devido a isso pode-se observar ondulações nas extremidades da faixa de passagem, chamado de fenômeno de Gibbs, que surgem devido à descontinuidade imposta pela janela da sequência $h[n]$, ou seja, o corte abrupto da janela retangular.

O aumento de M produz lóbulos com largura menor e mesma área, ou seja, ondulação mais rápida, mas com a mesma amplitude. Isso fica claro quando observamos a Figura 1, onde mostra que a medida que se aumenta M os lóbolos se estreitam e assim temos mais ondulações. Portanto quando se usa M menor temos menos ondulação na banda de passagem, porém o lóbulo principal fica mais largo, aumentando assim a banda de transição e perdendo seletividade. Neste caso deve-se projetar M de forma a obter um equilíbrio para o objetivo almejado. O janelamento retangular não é a melhor forma de se obter um filtro FIR, devido ao corte abrupto.

Veja também: Filtros Digitais - Filtro FIR Passa-faixa - Janelamento de Hamming, Hann, Blackman e Kaiser em Matlab.

REFERÊNCIAS:
OPPENHEIM, Alan V.; SCHAFER, Ronald W. Discrete-time signal processing. Pearson Education, 3rd Edition, 2016.

Nenhum comentário:

Postar um comentário

Postagens em Destaque