Exercícios Resolvidos de Transformada de Fourier

Ver Teoria

Enunciado

O sinal de uma onda quadrada com frequência de f = 3   H z tem N = 1024 pontos e foi amostrado a uma taxa de F s = 150 amostras por segundo. Plote a onda quadrada no domínio do tempo e use o método da transformada de Fourier para plotar a magnitude do sinal no domínio da freqüência.

Passo 1

O exercício pede para plotarmos uma onda quadrada no domínio do tempo e sua magnitude no domínio da frequência. Para criar a onda quadrada no domínio do tempo, vamos aprender uma função nova do MATLAB: s q u a r e .

Tendo criado a onda com s q u a r e , aplicaremos a função f f t na onda para termos a transformada de Fourier dela e plotar sua magnitude no domínio da frequência.

Passo 2

Primeiramente, vamos entrar no MATLAB as informações fornecidas pelo enunciado: a frequência f da onda quadrada, a taxa de amostragem F s e o número de pontos N :

Em seguida, podemos calcular o período de amostragem T (que é o inverso de F s ) e criar um vetor t representando o domínio do tempo:

Para construir o vetor t , cria-se primeiro um vetor que vai de 0 a N - 1 , com passo de 1 ( 0 : N - 1 ). Este vetor tem N = 1024 elementos, correspondendo aos N = 1024 pontos do sinal. Em seguida, esse vetor é multiplicado por T .

Tendo definido o domínio do tempo, podemos construir a onda quadrada, por meio do comando s q u a r e , que tem a sintaxe:

x = s q u a r e ( w ∙ t )

Ela retorna uma onda quadrada de amplitude 1 com frequência w   r a d / s para um vetor t representando o tempo. A onda quadrada é armazenada no vetor x .

Em seu programa, adicione o comando:

Este comando gerará a onda quadrada de frequência f = 5   H z com vetor t que criamos acima. Note que a frequência foi convertida de H z para r a d / s , fazendo w = 2 π f .

Passo 3

Para plotar a onda quadrada no domínio do tempo, entre com as linhas de código:

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. Em seguida, com o comando p l o t ( t , x ) , o gráfico da onda quadrada no domínio do tempo é efetivamente 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 os valores de x ( t ) , indicados por y l a b e l ( ' x ( t ) ' ) .

Rodando o programa, temos o gráfico da onda quadrada:

Passo 4

Vamos aplicar o método da transformada de Fourier para plotar a magnitude do sinal no domínio da frequência. Para isto, usaremos a função f f t ( ) do MATLAB, que tem a seguinte estrutura:

Y = f f t ( X )

A entrada da função f f t ( ) é um vetor X contendo dados no domínio do tempo, representados por números reais. Já a saída é um vetor Y com números complexos: é a conversão de X no domínio do tempo para o domínio da frequência. Os vetores X e Y têm a mesma quantidade de elementos.

Digite no seu script o comando:

Com esta linha de código, o MATLAB passará o sinal da onda quadrada no domínio do tempo, representada pelo vetor x , para o domínio da frequência. O sinal no domínio da frequência é representada pelo vetor y .

Passo 5

Após aplicar a transformada de Fourier, vamos calcular a magnitude do sinal no domínio da frequência. Para isto, usaremos 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 .

Já temos o eixo vertical do gráfico da onda quadrada no domínio da frequência, 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 ), com N elementos. 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 .

Passo 6

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 do sinal 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. Fazemos isso pois, no domínio da frequência, a partir de F _ s / 2 , as magnitudes começam a se repetir e seria redundante plotá-las.

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 | ' ) .

Execute o programa e você terá a magnitude da onda quadrada no domínio da frequência:

Resposta

Onda quadrada no domínio do tempo

Magnitude da onda quadrada no domínio da frequência