Prévia do material em texto
Grupo 7: Alan Müller (242036281) ; Enzo S.Z.P. Machado (221006870); Matheus L. da Silveira
(201000136)
Questão de referência: 5.10-13 c
ANÁLISE DE FILTRO DIGITAL COM TRANSFORMADA Z
Questão a ser respondida
The MATLAB signal-processing toolbox function cheby1 helps design digital Chebyshev type I
filters. A Chebyshev type I filter has passband ripple and smooth stopband. Setting the
passband ripple to Rp = 3 dB, repeat Prob. 5.10-12 using the cheby1 command. With all other
parameters held constant, what is the general effect of reducing Rp, the allowable passband
ripple?
O item, referente a questão anterior: (c) Design an eighth-order digital bandpass filter with
passband between 5π/24 and 11π/24.
O que é um fitro Chebyshev tipo 1
O filtro Chebyshev Tipo I é um filtro analógico ou digital do tipo IIR (Resposta Infinita ao
Impulso), que se destaca por ter uma resposta na banda passante com ripple controlado
(pequenas oscilações no ganho) e uma banda de rejeição com atenuação monotônica, ou seja,
sem ondulações. Sua principal vantagem é oferecer uma transição mais rápida entre a banda
passante e a banda de rejeição em comparação a filtros como o Butterworth, o que permite
usar uma ordem mais baixa para atingir os mesmos requisitos de seletividade. Isso resulta em
maior eficiência computacional e menor uso de recursos, sendo muito utilizado em aplicações
onde um pequeno ripple na banda passante é aceitável, como telecomunicações,
processamento de sinais e controle digital. Entretanto, ele não possui fase linear, o que pode
gerar distorções temporais em sinais sensíveis, como áudio de alta fidelidade e algumas
aplicações digitais críticas.
Como ele funciona?
O filtro Chebyshev Tipo I possui ripple controlado na banda passante, permitindo pequenas
variações no ganho dentro dessa faixa. Esse ripple é definido pelo parâmetro “rp”, medido em
decibéis (dB). Ao aceitar essas ondulações, o filtro consegue uma transição mais rápida entre a
banda passante e a de rejeição e, consequentemente, exige uma ordem menor em comparação
a filtros como o Butterworth para atingir a mesma atenuação.
Introdução
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 1/10
Na sua resposta em frequência, o filtro apresenta pequenas ondulações na banda passante,
mas na banda de rejeição o comportamento é monotônico, ou seja, o ganho decai suavemente,
sem oscilações.
Matematicamente, o filtro Chebyshev Tipo I é construído com base no conceito de minimax,
buscando minimizar o erro máximo entre a resposta ideal e a real dentro da banda passante,
esse princípio vem da aproximação de Chebyshev, que também dá nome ao filtro.
A importância do cheby1 para processamento digital de sinais
Vantagens
Transição mais rápida do que filtros como Butterworth (para mesma ordem);
Boa opção quando o ripple na banda passante é aceitável;
Eficiência: menor ordem -> menos coeficientes -> menos custo computacional.
Desvantagens
Não é linear em fase e pode causar distorção;
O ripple nem sempre é desejado, como em áudio, por exemplo.
As funções na biblioteca scipy.signal
https://docs.scipy.org/doc/scipy/reference/signal.html
cheb1ap(N, rp): Retorna (z,p,k) para o filtro Chebyshev type I LPF, com o ripple
determinado.
cheby1(N, rp, Wn[, btype, analog, output, fs]): para determinação de filtros Chebyshev type
I, digitais ou analógicos. Pode retornar polinômios (b/a), zpk, ou seções de segunda
ordem.
cheb1ord(wp, ws, gpass, gstop[, analog, fs]): retorna a ordem mínima do filtro Chebyshev
type I que atende as especificações.
Adicional:
tf2zpk(b,a): apresenta zpk após a obtenção da forma polinomial da resposta em
frequência; utilizado de forma adicional, visto que o cheb1ap retorna apenas o equivalente
LPF.
Parâmetros e suas funções
N: ordem do filtro, inteiro;
Implementação
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 2/10
https://www.google.com/url?q=https%3A%2F%2Fdocs.scipy.org%2Fdoc%2Fscipy%2Freference%2Fsignal.html
rp: ripple, do tipo float, em dB positivo;
(z,p,k): zeros, polos, ganho;
Wn: frequência onde a atenuação chega a amplitude do ripple, pode ser um vetor de
comprimento 2 ou escalar, a depender do tipo de filtro;
btype: tipo do filtro (‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’)
analog: se o filtro apresentado será analógico (caso verdadeiro) ou digital (padrão ou falso) -
tipo booleano;
output: tipo de saída (polinômio, zpk ou segunda ordem);
fs: frequência de amostragem (do sinal a ser filtrado);
wp, ws: limite da banda passante/banda de rejeição - a transição ocorre entre as duas
frequências - está na mesma unidade de fs e é normalizado;
gpass: máxima perda na banda passante;
gstop: mínima atenuação na banda de rejeição;
Exemplo visual
Filtro passa-baixas Chebyshev Tipo I com Ripple = 1 dB, gera uma curva com "N-ondas", para
ordem N, até a frequência de corte e que cai abruptamente em seguida.
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 3/10
Código de implementação - Versão 01
#A região de convergência (ROC) de um filtro digital depende da estabilidade e causalidad
# Para um filtro Chebyshev Tipo I, que é projetado para ser um filtro IIR, a
# região de convergência é definida por onde a transformada Z do sistema
# converge.
# Se o filtro for estável e causal, a ROC será exterior ao círculo unitário,
# ou seja, todos os polos devem estar dentro do círculo unitário
# (∣𝑝∣de corte para uso com cheby1 (dividindo por pi)
omega_c_norm = [f / np.pi for f in omega_c]
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 5/10
# Obtendo o filtro digital passa-banda Chebyshev Tipo I
b, a = cheby1(N, rp, omega_c_norm, btype='bandpass')
# Zeros, polos e ganho
z, p, k = tf2zpk(b, a)
# Plot do plano z (diagrama de polos e zeros)
plt.figure(figsize=(10,5))
plt.subplot(1, 2, 1)
unit_circle = plt.Circle((0, 0), 1, color='black', fill=False, linestyle='--')
plt.gca().add_artist(unit_circle)
plt.plot(np.real(z), np.imag(z), 'o', label='Zeros')
plt.plot(np.real(p), np.imag(p), 'x', label='Polos')
plt.title('Diagrama de Polos e Zeros (Plano z)')
plt.xlabel('Re(z)')
plt.ylabel('Im(z)')
plt.axis('equal')
plt.grid(True)
plt.legend()
# Frequência de resposta
Omega = np.linspace(-np.pi, np.pi, 1000)
ejOmega = np.exp(1j * Omega)
H = np.polyval(b, ejOmega) / np.polyval(a, ejOmega)
plt.subplot(1, 2, 2)
plt.plot(Omega, 20 * np.log10(np.abs(H)), 'k')
plt.title(r'Resposta em Frequência $|H_{BP}(e^{j\Omega})|$')
plt.xlabel(r'$\Omega$')
plt.ylabel(r'$|H_{BP}(e^{j\Omega})|$ (dB)')
plt.xticks(
ticks=[-np.pi, -11*np.pi/24, -5*np.pi/24, 0, 5*np.pi/24, 11*np.pi/24, np.pi],
labels=[r'$-\pi$', r'$-\frac{11\pi}{24}$', r'$-\frac{5\pi}{24}$', '0',
r'$\frac{5\pi}{24}$', r'$\frac{11\pi}{24}$', r'$\pi$']
)
plt.grid(True)
plt.ylim(-40, 5)
plt.tight_layout()
plt.show()
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 6/10
Avaliação da variação do ripple permitido na banda passante
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import cheby1, freqz
# Frequência de amostragem (normalizada)
fs = 2
wp = [5/24, 11/24] # banda passante normalizada
ws = [1/8, 13/24] # banda de rejeição desejada
# Ripple variados
rp_values = [3, 1, 0.5] # em dB
colors = ['r', 'g', 'b']
labels = []
plt.figure(figsize=(8, 5))
for rp, color in zip(rp_values, colors):
# Determina a menor ordem necessária para cada ripple
from scipy.signal import cheb1ord
N, wn = cheb1ord(wp, ws, rp, 30) # 30 dB de atenuação mínima na rejeição
# Gera o filtro com essa ordem
b, a = cheby1(N, rp, wn, btype='bandpass')
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 7/10
w, h = freqz(b, a, worN=1024)
plt.plot(w / np.pi, 20 * np.log10(np.abs(h)), color=color, label=f'rp={rp} dB, ordem=
labels.append(f"rp = {rp} dB → ordem {N}")
# Plot
plt.title('Efeito da Redução do Ripple (rp) em Filtros Chebyshev Tipo I')
plt.xlabel('Frequência Normalizada (×π rad/amostra)')
plt.ylabel('Ganho (dB)')
plt.grid(True)
plt.legend()
plt.ylim(-60, 5)
plt.tight_layout()
plt.show()
Com os gráficos gerados pelos códigos desenvolvidos em Python, podemos ver claramente o
comportamento do filtro de Chebyshev Tipo I. Podemos ver como o ripple afeta banda de
passagem, permitindo que apresente pequenas variações, e também como o ripple é
impactado pelo dB e pela ordem do filtro. Também é possível ver a transição rápida e sem
oscilações para a banda de rejeição.
CONCLUSÕES E OBSERVAÇÕES
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 8/10
Aplicações Típicas do Filtro Chebyshev Tipo I
O filtro Chebyshev Tipo I é altamente indicado em aplicações onde se busca transições rápidas
entre banda passante e banda de rejeição, com eficiência computacional e aceitação de
pequenas variações na banda passante.
1. Processamento de Sinais em Telecomunicações
Aplicações: filtragem de bandas específicas em sistemas de rádio,
modulação/demodulação, rejeição de ruídos fora da banda útil.
Justificativa técnica:
1. Alta eficiência espectral: permite maior aproveitamento da largura de banda.
2. Ripple na banda passante é tolerável, já que a integridade perceptiva dos sinais
digitais é mais importante que a linearidade de fase.
3. Ordem menor em relação a filtros FIR ⇒ ideal para sistemas embarcados e tempo
real.
2. Processamento Digital de Áudio em tempo real Aplicações: equalização, corte de ruídos,
filtros crossover em sistemas de som.
Justificativa técnica:
Por não precisar de um grande poder computacional, torna-se ideal para dispositivos de
áudio com restrições de hardware.
O ripple controlado na banda passante é muitas vezes imperceptível ao ouvido humano.
Observação: Para áudio de alta fidelidade, o ripple pode ser indesejado, o que veremos
abaixo.
3. Controle Digital e Automação Aplicações: filtragem de ruído em sensores,
suavização de sinais de controle, sistemas de realimentação.
Justificativa técnica:
Tempo de resposta rápido devido ao número reduzido de coeficientes.
Utilização em sistemas em tempo real com recursos computacionais limitados.
Situações onde o filtro não é indicado
Apesar de sua eficiência, o filtro Chebyshev Tipo I não é adequado em todas as situações.
1. Áudio de Alta Fidelidade ou Crítico (Hi-Fi)
Problema: apresenta ripple na banda passante, que causa pequenas oscilações no ganho
dentro da faixa audível.
Não possui fase linear, podendo causar distorções temporais, especialmente em sinais
complexos como músicas.
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&printM… 9/10
2. Em comunicações digitais de alta precisão, ou em imagens
Problema: o filtro Chebyshev Tipo I não tem fase linear.
A distorção de fase pode causar interferência entre símbolos (ISI) ou distorções visuais.
Exemplos críticos: codificadores de voz (VoIP), filtros de reconstrução de DACs.
Brasília, 19 de junho de 2025.
19/06/2025, 18:04 SSTD-G7.ipynb - Colab
https://colab.research.google.com/drive/1BbPZLSmYL80e-Jono5B9W6n_VnVjUfG4?usp=sharing&authuser=4#scrollTo=odLZZ1aCTvSa&print… 10/10