Kaw Academy » Blog Archives

Tag Archives: Série de Fourier

PDS

Detalhes que fazem a diferença

Published by:

 

A análise de Fourier nos permite visualizar um determinado sinal no domínio da frequência, e a partir disso podemos conhecer a faixa de frequência (largura de banda) ocupada pelo sinal.

Sinais periódicos produzem espectros frequenciais discretos, também conhecidos por espectros de linhas, ou ainda, de raias. Cada linha apresenta a amplitude de sua participação na formação da forma de onda temporal do sinal periódico correspondente, e da frequência. A primeira raia representa o nível médio do sinal, também chamado de nível DC (frequência nula) do sinal. A segunda raia representa a componente fundamental (a senóide que oscila na mesma frequência do sinal periódico), a partir da qual as demais componentes são obtidas como múltiplos inteiros da fundamental.

Considerando sinais discretos no tempo (como os sinais digitais), vamos analisar (cálculo do espectro frequencial, determinado pelos coeficientes da Série de Fourier) e sintetizar (cálculo da forma de onda no tempo a partir do espectro frequencial) alguns sinais periódicos. Para tanto precisamos da equações de análise e síntese de sinais periódicos (Série de Fourier), mostradas a seguir:

Eq. de Análise:  c_k = \frac{1}{N_0}\sum_{n=0}^{N_0-1}x[n]e^{-jn\Omega_0k}

Eq. de Síntese:  x[n]=\sum_{k=0}^{N_0-1}c_ke^{jn\Omega_0k}

1. Sinal senoidal:    x[n] = 5.sen(\Omega_0n)

N_0 = 16 \Rightarrow \Omega_0 = \frac{2\pi}{N_0} = \frac{2\pi}{16} = \frac{\pi}{8} rad/amostra

Sinal senoidal com 16 amostras/período

Sinal senoidal com 16 amostras/período

Agora vamos fazer a análise desse sinal, ou seja, vamos calcular os coeficientes da série de Fourier...

O código mostrado a seguir seria a forma mais simples e direta para calcular e exibir o espectro do sinal senoidal:

Espectro frequencial de um sinal senoidal (incorreto).

Espectro frequencial de um sinal senoidal (incorreto).

Observe a magnitude das raias exibidas. Os valores são muito pequenos, próximos de zero, para todas as raias. Isto não está correto..., deveria aparecer duas raias com amplitude de metade da amplitude máxima do sinal nos extremos do eixo horizontal, ou seja, no primeiro e último harmônicos mostrados.

Mas o que está errado no script? Depois de algum tempo seguindo e acompanhando os valores das variáveis do código, percebe-se um aviso do interpretador indicando que a atribuição de números complexos a uma variável real (float) causará a perda da parte imaginária do número complexo...

Aviso de perda de informação em atribuição

Aviso de perda de informação em atribuição

Correção:  ao criar o vetor para armazenar os coeficientes da série de Fourier, foi utilizado o seguinte comando (linha 15):

Este comando cria um vetor com N0 (16) posições para armazenamento de valores reais (float), pois o parâmetro 'dtype' da função 'zeros' tem como valor default o tipo 'float', enquanto que de forma correta deveríamos ter valores complexos (complex). Assim, o comando correto é:

Espectro frequencial (magnitude) de um sinal senoidal.

Espectro frequencial (magnitude) de um sinal senoidal.

Viu aí?! A falta da especificação de um único parâmetro de uma função pode por tudo a perder...

Mas ainda falta um outro detalhe... se os coeficientes são valores complexos, então precisamos traçar também o gráfico da fase dos coeficientes:

Espectro frequencial de uma senóide: magnitude (correta) e fase (incorreta).

Espectro frequencial de uma senóide: magnitude (correta) e fase (incorreta).

Se vc conhecesse a fase do espectro de uma senóide saberia que ela não se parece em nada com o que está plotado no segundo plano cartesiano da figura anterior. Mais um detalhe que faz a diferença!!! Os valores próximos a zero dos coeficientes da série de Fourier são decorrentes de imprecisões numéricas, o que acaba por acarretar ângulos errados.

Correção: atribuir valor nulo para os coeficientes que estiverem com magnitude abaixo de um limiar, por exemplo: 1,0\times10^{-14}

Assim, teremos o seguinte espectro:

Espectro frequencial de uma senóide: magnitude e fase (corretos).

Espectro frequencial de uma senóide: magnitude e fase (corretos).


 

2. Sinal senoidal meio retificado

N_0 = 16\Rightarrow \Omega_0 = \frac{2\pi}{N_0} = \frac{2\pi}{16} = \frac{\pi}{8} rad/amostra

Espectro frequencial de uma senóide meio retificada.

Espectro frequencial de uma senóide meio retificada.

3. Sinal senoidal completamente retificado

N_0 = 16\Rightarrow \Omega_0 = \frac{2\pi}{N_0} = \frac{2\pi}{16} = \frac{\pi}{8} rad/amostra

Senóide Retificada Completa: forma de onda e espectro frequencial.

Senóide Retificada Completa: forma de onda e espectro frequencial.

Concluindo, os detalhes fazem a diferença!