sábado, 1 de novembro de 2014

Projetando filtros digitais (IIR) usando os recursos do Scilab

Janela inicial
Os filtros digitais podem ser classificados em duas classes: IIR (resposta ao impulso com duração inifinita) e FIR (resposta ao impulso com duração finita). Usando o comando iir podemos projetar filtros do tipo PB, PA, PF ou RF. Os parâmetros necessários são: as frequências importantes, a ordem do filtro (que deve ser calculada antes), o tipo de aproximação desejada. Da ajuda do Scilab:

iir

iir digital filter

Calling Sequence

hz=iir(n,ftype,fdesign,frq,delta)
[p,z,g]=iir(n,ftype,fdesign,frq,delta)

Arguments

n: positive number witn integer value, the filter order.
ftype
string specifying the filter type, the possible values are: 'lp' for low-pass,'hp' for high pass,'bp' for band pass and 'sb' for stop band.
fdesign
string specifying the analog filter design, the possible values are: 'butt', 'cheb1', 'cheb2' and 'ellip'
frq
2-vector of discrete cut-off frequencies (i.e., 0). For 'lp' and 'hp' filters only frq(1) is used (in this case, frq can be a scalar). For 'bp' and 'sb' filters frq(1) is the upper cut-off frequency and frq(2) is the lower cut-off frequency.
delta
2-vector of error values for cheb1, cheb2, and ellip filters where only delta(1) is used for cheb1 case, only delta(2) is used for cheb2 case, and delta(1) and delta(2) are both used for ellip case. 0
  • for cheb1 filters 1-delta(1) in passband
  • for cheb2 filters 0 in stopband
  • for ellip filters 1-delta(1) in passband and 0 in stopband
hz: a single input single output discrete transfer function, the low pass filter
p: vector of transformed filter zeros.
z: vector of transformed filter poles.
g: a scalar: transformed filter gain.         
O script desenvolvido também usa intensivamente o comando uicontrol para gerar os botões e demais itens para a entrada dos parâmetros para o cálculo dos filtros.

uicontrol

create a Graphic User Interface object

Calling Sequence

h = uicontrol(PropertyName,PropertyValue,...)
h = uicontrol(parent,PropertyName,PropertyValue,...)
h = uicontrol(uich)

Exemplo de saída:



Obs: o script completo tem mais de 300 linhas de código e não será incluído nesta postagem, mas pode ser solicitado por e-mail.

Um comentário:

  1. Boa noite professor. Sou estudante de engenharia elétrica. E atualmente estou trabalhando com filtros IIR. Gostaria se possível que o senhor me enviasse o script. Deste trabalho. Se possível. Obrigado. Vittor21@ig.com.br

    ResponderExcluir