thinking-snoopy

Impacto dos pólos e zeros na magnitude da resposta em frequência.

Intro

Como os pólos e zeros afetam a magnitude da resposta em frequência de um sistema?

Anteriormente (no tópico: [Funções Trasferência]) foi mostrado como a localização dos pólos e zeros afeta os contornos da superfície de um sistema:

Neste documento, será mostrado como os pólos e zeros afetam a resposta de frequência de um sistema usando vários exemplos. Você pode achar que o primeiro exemplo não é muito claro, mas se você relacionar cada um dos exemplos entre si, isso pode ajudar na sua compreensão.

Exemplo 1

Para o primeiro exemplo, será usado o sistema fornecido pelo diagrama de fluxo de sinal mostrado abaixo. Também são fornecidas a equação de diferenças de sistemas e a função de transferência.

exemplo1_fluxo.drawio

A eq. de diferenças do sistema ilustrado acima fica:

Trabalhando esta expressão algebricamente:

Que rende a seguinte função transferência:

eue rende a seguinte função transferência

Neste função percebemos 2 zeros (raízes do numerador), localizados em .

Adicionalmente temos pólos em .

Os pólos correspondem às raízes do denominador de .

Um diagrama pólo-zero deste sistema rende:

pzmap_exemplo1.png

Usando a função bode() do Matlab para sistemas discretos (no plano-z), rende algo como:

bode_exemplo1.png

Note que o próprio Matlab alerta para a forma como calcula este diagrama:

Para modelos de tempo discreto com tempo de amostragem , bode() usa a transformação para mapear o círculo unitário para o eixo real de frequência. A resposta de frequência é plotada apenas para frequências menores que a frequência de Nyquist (rad) ou (graus), e o valor padrão 1, para unidade de tempo (= 1 segundo), é assumido quando não é especificado.

O gráfico anterior foi feito usando os comandos:

Podemos usar a função bodeplot() que agrega mais opções para melhorar o gráfico anterior:

E então temos o gráfico:

bodeplot_exemplo1.png

Note que o "eixo " (das frequências), ainda está na escala logarítmica ().

Modificando para variação linear do eixo (frequências) obtemos um gráfico mais útil:

bodeplot_exemplo1_linear_freq.png

Note que o Matlab vai variar a frequência deste "Diagrama de Bode" até a metade da frequência de Nyquist. Neste caso: Hz, então, o diagrama só avança até 0,5 Hz.

Este gráfico indica um pico de atenuação do sinal de entrada na frequência aproximada de 0,243 Hz ou, se considerarmos um gráfico genérico, temos que considerar que corresponde à .

No caso anterrior, quando ingressamos a transfer function no Matlab, somos "obrigados" à especificar um período de amostragem, e neste caso foi adotado segundo, o que corresponde à Hz. Mas o sistema será implementado usando segundos !?

Se este sistema for amostrado à Hz, o pico de atenuação de sinal ( dB) terá ocorrido em Hz. Ou:

bodeplot_completo_exemplo1_100Hz_linear_freq

 

Voltando ao primeiro gráfico usando Hz, seu diagrama completo (amplitudes e fase frequência) rende:

bodeplot_completo_exemplo1_linear_freq.png

Note que o gráfico anterior corresponde à vista superior de um gráfico de superfície da função :

exemplo_1_surface.png

Pode-se perceber os picos positivos associados com os zeros de e os picos negativos associados com os pólos de . Uma "vista superior" rende:

exemplo_1_surface_superior.png

Gráficos gerados usando script:

Perceba mais alguns detalhes comparando o gráfico anterior com o diagrama de pólos e zeros:

Gráfico de superfície de Diagrama pólo-zero
example1_surface_origexemplo_1_surface_superior.png

Perceba a intersecção entre o círculo unitário e a superfície formada por . A figura abaixo mostra os pontos de intersecção que o cilindro faria com o superfície de , mostrada como linhas de cores diferentes (azul, verde, vermelho e amarelo):

exemplo1-interseccao

Uma vista superior plana (com um diagrama de pólo zero sobreposto) mostra que a linha azul está associada ao intervalo de ângulos de a (rad) (0 à ) e a linha verde está associada aos ângulos de à radianos ( à ). Você também deve observar que os contornos das linhas azuis e amarelas serão “espelhados” no eixo real. Da mesma forma, as linhas de contorno verdes e vermelhas serão “espelhadas” ao longo do eixo real:

exemplo1_plano_z

Se você traçasse a magnitude dos pontos de intersecção em relação ao ângulo feito com o eixo real, na faixa de ângulos de a radianos ( à ), (ou seja, plotasse a amplitude das linhas coloridas de interseção em relação ao ângulo), você obteria o gráfico mostrado abaixo:

exemplo1_magnitude_x_angulo

Você notará que o lado esquerdo do gráfico acima "espelha” o lado direito. Traçar o lado direito, de 0 a radianos (ou de 0 até ), por si só resulta no gráfico a seguir:

exemplo1_magnitude_x_angulo_half

Note que o aumento da magnitude no ângulo de é causado pelo "contorno do cone" associado ao pólo localizado em . Observe também que a redução na magnitude em um ângulo de é causada pelo "contorno do cone invertido" associado ao zero localizado em .

Diagrama de Bode no mundo discreto

Acontece que se o eixo do ângulo horizontal for interpretado como frequência com unidades de radianos por amostra, então o gráfico acima é a magnitude da resposta em frequência do sistema, conforme mostrado na figura abaixo:

exemplo1_magnitude_response

Observe que se você quisesse interpretar a resposta de frequência em Hertz (em vez de radianos por amostra), então você precisaria saber a taxa de amostragem associada ao sinal que estava passando pelo sistema. Para converter o eixo horizontal para Hertz, substitua por "metade da taxa de amostragem". Por exemplo, se a taxa de amostragem fosse de 100 Hz, então o ponto médio de radianos por amostra no gráfico acima equivaleria a 25 Hz ():

exemplo_1_magnitude_response_100Hz

Note que o gráfico só avança até a frequência de Nyquist ().

Uso da função freqz()

O Matlab pode facilitar as coisas ao disponibilizar a função:

[h, w] = freqz(b, a, n, fs)

Esta função retorna o diagrama de resposta frequêncial (magnitude e fase) e o vetor que corresponderá a frequência física real (em Hz), de pontos da função transferência do filtro fornecida com base nos seus coeficientes e . se o usuário não quiser especificar o número desejado de pontos.

Note:

Onde: grau do numerador, (ou número de zeros de ); grau do denominador, (ou número de pólos de ).

Lembre-se eventualmente da função filter().

A função freqz() aplicada no caso anterior, resultaria em:

exemplo_1_freqz.png

 

Notas sobre pólos e zeros localizados na origem

⚠️ Detalhes: você verá que um pólo ou zero localizado na origem () não afeta a resposta em frequência de um sistema.

Considere a função transferência abaixo:

Este sistema possui um pólo localizado em , isto é, na origem do plano-z.

Num sistema com um único pólo na origem, a intersecção da superfície com o cilindro unitário seria tal que a amplitude dos pontos de interseção seria igual, conforme mostrado nas ilustrações abaixo. Na verdade, você descobrirá que a amplitude dos pontos de interseção seria de 0 dB.

polos_zero_polo_origem

Outra interpretação pode ser feita de um ponto de vista matemático. Recorde que a superfície de mostra a magnitude de na escala de decibéis (ou seja, ) para um intervalo de valores de e é um número complexo. Na imagem anterior, para gerar a superfície , foram calculados pontos para vários valores de , com a parte real variando no intervalo: e a parte imaginária variando no intervalo: .

As interseções ocorrem quando a magnitude de é igual à 1, ou . Alguns pontos de interseção são fáceis de serem identificados, por exemplo quando é igual à: , , e , os quais possuem magnitude de 1.

Para encontrar todos os pontos de intersecção será necessário avaliar a expressão para todos os casos de magnitude de igual à 1. Uma vez que , então , assim, a magnitude de será igual à 1 quando :

exemplo1_surface_interseccao_circulo_unitario

Ou do ponto de vista "superior":

exemplo1_similar_bode

Uma situação muito semelhante surgiria se existisse um único zero na superfície . Desta vez você descobriria que a interseção da superfície com o cilindro unitário seria tal que a amplitude dos pontos de interseção seria igual a 0 dB ().

Atenção:

👋 O que isso mostra é que: pólos ou zeros colocados na origem não afetarão a magnitude da resposta em frequência de um sistema.

 

Por que acrescentar pólos e zeros na origem do plano-z?

Isto levanta a questão:

− Por que então é que existem pólos e zeros na origem se eles não afectam o comportamento de “magnitude” do sistema?

A resposta é que, embora não afetem a resposta de magnitude, afetam os atrasos no sistema (que está associado ao diagrama de fase (ou defasagens) na resposta frequêncial de um sistema).

Em geral, você descobrirá que um sistema normalmente possui um número igual de pólos e zeros. Sistemas que não possuem um número igual de pólos e zeros terão atrasos “desnecessários” introduzidos no sistema.

Voltando ao sistema anterior (com pólo na origem do plano-z):

Se multiplicarmos o numerador e denominador por , a função transferência fica:

Adaptando esta expressão para o formato usualmente adotado para filtros, podemos determinar os componentes a . Neste caso, , e . A equação de diferenças fica:

Na forma de um diagrama de fluxo de sinais teríamos algo como:

exemplo1_diagrama_fluxo.drawio

Que rende uma estrutura simplificada como:

exemplo1_diagrama_fluxo_equiv

O que você deve perceber é que este sistema simplesmente atrasa a entrada em uma amostra e nada mais. Embora possa haver razões práticas para querer atrasar um sinal por uma amostra, em muitos casos, como na filtragem de sinais, o atraso pode não ser desejável e serve simplesmente para desacelerar um processo em uma amostra.

Na maioria dos casos, você descobrirá que os sistemas terão o mesmo número de pólos e zeros; caso contrário, atrasos desnecessários poderão ser introduzidos no sistema, como demonstrado no exemplo anterior.

 

Exemplo 2

Neste segundo exemplo, como no primeiro exemplo, há também um par de pólos e um par de zeros. No entanto, os pólos e zeros estão em locais diferentes. Observe que os pólos estão mais próximos do círculo unitário e em um ângulo diferente, quando comparados ao primeiro exemplo. Os zeros estão à mesma distância do círculo unitário, mas estão localizados em um ângulo de 45 graus ( radianos). Esta mudança na localização dos pólos e zeros resulta em contornos diferentes na superfície H(z) e, portanto, as interseções do ‘cilindro unitário’ com a superfície H(z) também serão diferentes.

A expressão para neste caso é:

Trabalhando esta expressão no Matlab/Ocatve, descobrimos que:

Percebemos a seguinte disposição no plano-z:

exemplo2_pzmap.png

Um gráfico de superfície de gera:

exemplo2_superficie_H_1

Destacando a intersecção com o círculo unitário temos:

exemplo2_superficie_H_2.png

O gráfico à seguir mostra a amplitude dos pontos de intersecção em relação ao ângulo feito com o eixo real, na faixa de ângulos de a para este segundo exemplo.

exemplo2_bode_a

Você deve comparar isso com o primeiro exemplo e notar a amplificação significativa em e radianos (), causada pelos pólos estarem mais próximos do círculo unitário e posicionados na linha de ângulo radial 0,66π radianos e -0,66π radianos. Note, que a antenução (cones negativos) está concentrada próxima dos (onde estão localizados os zeros de ).

Mais uma vez, os lados esquerdo e direito são versões espelhadas um do outro e vamos nos concentrar no lado direito de 0 a radianos (ou de 0 à ) (que corresponde à freq. de Nyquist, ou ):

exemplo2_bode_b

Gráfico similar pode ser obtido no Matlab fazendo-se:

exemplo2_bode_matlab.png

 

 


Opcional:

⏩ Próximo tópico sugerido: projeto de sistema usando alocação pólo-zero.


Theme: Fluent.