Exercícios Resolvidos de Transformada de Fourier

Ver Teoria

Enunciado

Gere 128 pontos para o seguinte sinal:

h = c o s c o s   250 π t   - s i n s i n   200 π t  

Plote o sinal no domínio do tempo. Usando o método da transformada de Fourier e gere e plote o sinal no domínio da frequência. Use a escala de H z   no eixo X. Assuma a taxa de amostragem de 1   k H z . Verifique se os picos ocorrem onde era esperado para o domínio da frequência.

Passo 1

O enunciado nos dá uma função representando um sinal no domínio do tempo e nos pede para:

  1. Plotar o sinal no domínio do tempo;
  2. Aplicar a transformada de Fourier no sinal para obtê-lo no domínio da frequência. Para isto, usaremos a função f f t ( ) do MATLAB;
  3. Plotar o sinal do domínio da frequência, tendo as frequências em H z no eixo X do gráfico;
  4. Verificar se os picos do sinal ocorrem onde era esperado no domínio da frequência.

A partir do enunciado e da equação do sinal, que é composta por ondas cossenodal e seinodal, podemos obter algumas informações para entrarmos no MATLAB e resolvermos o exercício:

  • O número de pontos que o sinal deve ter é N   =   128 ;
  • A taxa de amostragem é de 1   k H z . Isto quer dizer que a frequência de amostragem F s é 1000   H z ;
  • A partir da frequência de amostragem, obtemos o período T em segundos do sinal: T = 1 F s = 1 / 1000 = 0,001   s ;
  • Chamando de:
  • 250 π t   e h 2 = s i n s i n   200 π t  

    Temos:

    h = h 1 - h 2

  • Uma onda cossenoidal normalmente tem o formato:
  • C = A c o s c o s   2 π f t  

    Onde A é a amplitude da onda e f , a frequência em H z .

  • Logo, podemos dizer que a amplitude de h 1 é de A 1 = 1 ;
  • Já a frequência de h 1 é:
  • 2 π f 1 = 250 π

    f 1 = 125   H z

  • Uma onda senoidal normalmente tem o formato:
  • S = A s i n s i n   2 π f t  

  • Logo, podemos dizer que a amplitude de h 2 é de A 2 = 1 ;
  • E que a frequência de h 2 é:
  • 2 π f 2 = 200 π
  • f 2 = 100   H z

Para verificar se os picos do sinal ocorrem onde era esperado no domínio da frequência, devemos olhar o gráfico do sinal no domínio da frequência e ver se os picos ocorrem na mesma frequência das ondas que compõem o sinal: f 1 = 125   H z e f 2 = 100   H z .

Passo 2

Primeiramente, vamos entrar no MATLAB as informações fornecidas pelo enunciado, que foram listadas logo acima, no passo 1. Em um script novo, digite:

O número de pontos é armazenado na variável N ; a frequência de amostragem na variável F _ s ; o período é calculado e armazenado na variável T ; a amplitude da onda 250 π t   é armazenada na variável A 1 e amplitude da onda h 2 = s i n s i n   200 π t   , na variável A 2 ; e, finalmente, a frequência de h 1 em H z é armazenada em f 1 e a frequência de h 2 , em f 2 .

Para fazermos a primeira coisa que o exercício pede – plotar o sinal no domínio do tempo – devemos criar um vetor t representando o domínio do tempo a partir o comando:

t   =   ( 0 : N - 1 ) * T

Neste comando, cria-se primeiro um vetor que vai de 0 a N - 1 , com passo de 1 ( 0 : N - 1 ). Este vetor tem N = 128 elementos, correspondendo aos N = 128 pontos pedidos pelo enunciado. Em seguida, esse vetor é multiplicado por T , que é o período, em segundos, do sinal h .

Vamos acrescentar esse comando para calcular o vetor t   no MATLAB e aproveitar e já gerar o sinal no domínio do tempo:

Nos comandos acima, após criar o vetor t , criamos um vetor chamado h 1 representando a onda cosseinodal h 1 e outro vetor chamado h 2 representando a onda senoidal h 2 .

O sinal h é criado em seguida, fazendo h 1 - h 2 .

Tendo os vetores t e h , podemos plotar o sinal h no domínio do tempo, por meio dos comandos:

Na primeira linha, pedimos ao MATLAB para gerar uma figura com o comando f i g u r e ( 1 ) , para termos o gráfico no domínio do tempo em uma janela diferente do gráfico no domínio da frequência (que também foi pedido no exercício e que geraremos mais pra frente, no mesmo script).

Em seguida, com o comando p l o t ( t , h ) , o gráfico do sinal no domínio do tempo é gerado.

Indicamos que o eixo horizontal do gráfico é o domínio do tempo por meio do comando x l a b e l ( ‘ t   [ s ] ’ ) . Temos no eixo vertical do gráfico o sinal h , indicado por y l a b e l ( ' h ' ) .

Vamos ver a carinha do sinal no domínio do tempo? Rodando o programa que escrevemos até agora, temos este gráfico:

Pronto! O primeiro item pedido pelo exercício está feito!

Passo 3

A segunda coisa que o exercício pede é usarmos a transformada de Fourier no sinal para obtermos a onda h no domínio da frequência. Para isto, usaremos a função f f t ( ) do MATLAB, incluindo a seguinte linha de código em nosso script:

Para calcular a transformada de Fourier, a função f f t ( ) tem como entrada o vetor h , que contém números reais representando o sinal h = c o s c o s   250 π t   - s i n s i n   200 π t   no domínio do tempo. Já a saída é um vetor Y com números complexos: é a conversão de h no domínio do tempo para o domínio da frequência. Os vetores h e Y têm a mesma quantidade de elementos.

Ao incluirmos esse comando no nosso código, o segundo item pedido pelo enunciado está feito (sim, esse passo foi bem curto XD)

Passo 4

Tendo executado o segundo item pedido pelo exercício, partimos para a terceira coisa que ele nos pede para fazer: plotar o sinal no domínio da frequência. Quando plotamos um sinal no domínio da frequência, normalmente temos no eixo Y do gráfico a magnitude do sinal obtido pela função f f t ( ) . Para calcular a magnitude, usamos a função a b s ( ) do MATLAB. Digite no MATLAB a linha de código:

Com esta linha, calculamos a magnitude de cada elemento do vetor Y usando a função a b s ( ) do MATLAB. Quando a entrada da função a b s é um número complexo, ela calcula sua magnitude.

Agora precisamos criar o eixo horizontal, representando o domínio da frequência. Para isto, digite os comandos:

Na primeira linha, calculamos o Δ f , que é o passo do domínio da frequência: ele começa em 0 e as frequências seguintes são obtidas pela soma de Δ f à frequência anterior. O Δ f é calculado dividindo a frequência de amostragem F _ s pelo número de pontos N e é armazenado na variável d e l t a _ f .

Na segunda linha, geramos o domínio da frequência, representado pelo vetor f _ d o m . A lógica da sua criação é igualzinha à lógica que usamos para criar o vetor t , do domínio do tempo.

Primeiramente, cria-se um vetor que vai de 0 a N - 1 , com passo de 1 ( 0 : N - 1 ). Este vetor tem 128 elementos, correspondendo aos N = 128 pontos exigidos pelo enunciado. Em seguida, esse vetor é multiplicado por d e l t a _ f . Desta forma, é criado o domínio da frequência, que vai de 0 a N - 1 * d e l t a _ f .

Após criar o domínio da frequência, vamos usar novamente a função p l o t para gerar o gráfico da magnitude da onda h no domínio da frequência:

Na primeira linha, pedimos ao MATLAB para gerar uma segunda figura com o comando f i g u r e ( 2 ) , para termos o gráfico no domínio da frequência em uma janela diferente do gráfico no domínio do tempo.

Em seguida, o gráfico da magnitude de Y no domínio da frequência é criado com o comando p l o t ( f _ d o m ( 1 : N / 2 ) , m a g n ( 1 : N / 2 ) ) . Repare que, para plotar, usamos somente a primeira metade dos vetores com N elementos f _ d o m e m a g n . Isso é indicado pela adição de ( 1 : N / 2 ) à direita do nome do vetor, que diz ao MATLAB que queremos pegar do primeiro elemento ao elemento N / 2 do vetor.

Usamos somente a primeira metade dos vetores f _ d o m e m a g n porque, no domínio da frequência, a partir de F _ s / 2 , as magnitudes começam a se repetir e não precisamos pôr elas no gráfico para encontrar o que o exercício pede.

Indicamos que o eixo horizontal do gráfico é o domínio da frequência por meio do comando x l a b e l ( ‘ f   [ H z ] ’ ) . Temos no eixo vertical do gráfico a magnitude de Y , indicado por y l a b e l ( ' | Y | ' ) .

Vamos ver a cara do sinal do domínio da frequência? Executando o programa, temos:

Voilà! Terceiro item pedido pelo exercício feito ;D

Passo 5

A última coisa que o exercício pede para fazermos é verificar se os picos do sinal ocorrem onde era esperado no domínio da frequência. Para vermos isso, devemos olhar o gráfico do sinal no domínio da frequência e ver se os picos ocorrem na mesma frequência das duas ondas que compõem o sinal: f 1 = 125   H z e f 2 = 100   H z .

Vamos clicar em cima dos picos no gráfico gerado do MATLAB, para vermos suas coordenadas. Vamos clicar no primeiro pico, mais à esquerda:

Viu que ele ocorre em 101,6   H z ? Bem próximo da frequência de h 2 = s i n s i n   200 π t   , que é f 2 = 100   H z .

Clicando no segundo pico, mais à direita:

Ele ocorre exatamente em 125   H z , mesma frequência de 250 π t   .

Portanto, os picos do sinal no domínio da frequência ocorrem onde eram esperados.

Se quiser, faça alguns testes aumentando o N , você verá que as frequências onde ocorrem os picos ficarão mais próximas de f 1 e f 2 , até se tornarem iguais a 100   H z e 125   H z .

Resposta

Gráfico do sinal no domínio do tempo:

Gráfico do sinal do domínio da frequência, tendo as frequências em H z no eixo X:

Os picos do sinal no domínio da frequência ocorrem onde eram esperados: nas frequências de 100   H z e 125   H z , correspondendo às frequências das ondas que compõem o sinal h .