Como implementar filtro passa-faixa Butterworth com Scipy.signal.butter

ATUALIZAR:

Eu encontrei uma receita Scipy com base nesta questão! Então, para qualquer pessoa interessada, vá direto para:Conteúdo »Processamento de sinal» Bandwidem Butterworth

Eu estou tendo dificuldades para conseguir o que parecia inicialmente uma tarefa simples de implementar um filtro passa-banda Butterworth para matriz 1-D numpy (série temporal).

Os parâmetros que tenho que incluir são o sample_rate, as frequências de corte IN HERTZ e possivelmente a ordem (outros parâmetros, como atenuação, frequência natural, etc., são mais obscuros para mim, portanto, qualquer valor "padrão" faria).

O que tenho agora é isso, o que parece funcionar como um filtro passa-alta, mas não tenho certeza se estou fazendo certo:

def butter_highpass(interval, sampling_rate, cutoff, order=5):
    nyq = sampling_rate * 0.5

    stopfreq = float(cutoff)
    cornerfreq = 0.4 * stopfreq  # (?)

    ws = cornerfreq/nyq
    wp = stopfreq/nyq

    # for bandpass:
    # wp = [0.2, 0.5], ws = [0.1, 0.6]

    N, wn = scipy.signal.buttord(wp, ws, 3, 16)   # (?)

    # for hardcoded order:
    # N = order

    b, a = scipy.signal.butter(N, wn, btype='high')   # should 'high' be here for bandpass?
    sf = scipy.signal.lfilter(b, a, interval)
    return sf

Os documentos e exemplos são confusos e obscuros, mas gostaria de implementar o formulário apresentado no comentário marcado como "para passagem de banda". Os pontos de interrogação nos comentários mostram onde eu apenas copiei e colei alguns exemplos sem entender o que está acontecendo.

Não sou engenheiro elétrico nem cientista, apenas um designer de equipamentos médicos que precisa realizar uma filtragem de passagem de banda bastante simples em sinais de EMG.

questionAnswers(3)

yourAnswerToTheQuestion