Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Transformada de Fourier utilizando o comando fft do MATLAB, Provas de Processamento Digital de Sinal

como calcular a Transformada de Fourier utilizando o comando fft do MATLAB

Tipologia: Provas

2020

Compartilhado em 16/11/2020

leticia-mina-11
leticia-mina-11 🇧🇷

5

(3)

1 documento

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNIVERSIDADE DE O PAULO
ESCOLA DE ENGENHARIA DE SÃO CARLOS
DEPARTAMENTO DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO
ENGENHARIA ELÉTRICA - SISTEMAS DE ENERGIA E AUTOMAÇÃO
AVALI ÃO - SEL0343 - PROCESSA ME NTO DIGITAL DE SINAIS
Tutorial: como calcular a Transformada de Fourier utilizando o comando fft
do MATLAB
Professor: Emiliano Martins
Aluna: Letícia Mina Odate Victor 10748069
São Carlos
2020
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Transformada de Fourier utilizando o comando fft do MATLAB e outras Provas em PDF para Processamento Digital de Sinal, somente na Docsity!

UNIVERSIDADE DE SÃO PAULO

ESCOLA DE ENGENHARIA DE SÃO CARLOS

DEPARTAMENTO DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO

ENGENHARIA ELÉTRICA - SISTEMAS DE ENERGIA E AUTOMAÇÃO

AVALIAÇÃO - SEL0343 - PROCESSAMENTO DIGITAL DE SINAIS

Tutorial: como calcular a Transformada de Fourier utilizando o comando fft

do MATLAB

Professor: Emiliano Martins

Aluna: Letícia Mina Odate Victor – 10748069

São Carlos

Sumário

1 Enunciado 1

2 Desenvolvimento Teórico 2

3 Aplicação no MATLAB 9

2 DESENVOLVIMENTO TEÓRICO

2 Desenvolvimento Teórico

Queremos obter uma representação espectral de sinais discretos, que são sequências de números, as quais podem ser obtidas ou não de uma amostragem. Acontece que quando pensamos no dominío da frequência, pensamos na ocorrência de um evento em um intervalo de tempo. Altas frequências nos remetem a variações velozes e baixas frequências a variações lentas. Em um domínio adimensional, porém, como é o caso de uma sequência de números, é meio complicado enxergar esse conceito de velocidade de variação. Assim, a forma como vamos construir o raciocínio aqui neste tutorial irá inicialmente tratar de sinais amostrados, que atuarão como uma ponte entre o domínio contínuo e o domínio discreto para daí estendermos o resultado para quaisquer sequências de números. Essa ponte incialmente será feita por um sinal intermediário fi(t) que nos auxiliará na transição entre os domínios. Ele será obtido de um sinal contínuo f (t) multiplicado por um trem de impul- sos.Isso fará com que ele, apesar de contínuo, seja bastante semelhante a um sinal discreto, já que o trem de impulso irá fazer com que ele possua o mesmo valor do sinal f (t) nos múltiplos do período de amostragem Ta e caia abruptamente para 0 fora desses intervalos, ou seja, a multiplicação pelo trem de impulso irá selecionar os pontos de f (t) nos intervalos de amostragem e igualará os demais pontos a 0. As figuras 1, 2 e 3 mostram para gente a forma desses sinais:

Figura 1: Sinal contínuo f (t)

2 DESENVOLVIMENTO TEÓRICO

Figura 2: Sinal contínuo fi(t)

Figura 3: Sinal discreto f [n]

Com base nesse raciocínio, a forma analítica de fi(t) é:

fi(t) = f (t). T I(t) = f (t).

n∑=∞ n=−∞

δ(t − nTa) (1)

Sendo fi(t) contínuo e tendo uma expressão analítica pra ele, sabemos como efetuar o cálculo de sua Transformada de Fourier Fi(f ). Usaremos o seguinte par:

TF Direta X(f ) =

∫^ ∞

−∞

x(t)exp(−i 2 πf t)dt

TF Inversa x(t) =

∫^ ∞

−∞

X(f )exp(i 2 πf t)df

2 DESENVOLVIMENTO TEÓRICO

Observa-se que tanto a equação 3 quanto a equação 2 envolvem o período de amostragem Ta o qual vimos que não é facilmente indentificável olhando somente para uma sequência de números f [n] formada pelas amostras do sinal original (f [n] = f (nTa)). Assim, para ajudar no seguimento da construção da nossa análise, vamos adotar Ta = 1 e definir uma operação que será então nossa Transformada de Fourier para sinais discretos:

F (v) =

n∑=∞ n=−∞

f [n]exp(− 1. 2 .π.v.n) (4) Essa operação é denominada DTFT (Discret Fourier Transform) e comparando ela a relação 3 ve- mos que são idênticas substituindo v = f.Ta, o que nos mostra que v é adimensional, condizente com a sequência de números f [n] presente na equação. Essa operação envolvendo domínios adimensio- nais é possível de ser calculada computacionalmente, ou seja, ao tentar usar a máquina para calcular a TF de um sinal conseguiremos calcular sua DTFT e por isso todo esse processo para relacionar a DTFT e a TF. Cabe ressaltar aqui que definir Ta = 1 não nos causa prejuízos graves e fazemos isso apenas para simplificar. Comparando as equações 4 e 3 Para irmos de F (v) para Fi(f ) basta reescalonar o eixo das frequências dividindo-o por Ta quando conhecido seu valor real. Temos agora então a Transformada de Fourier de sinais discretos. Será mesmo? Sabemos que a TF envolve um par: TF direta e TF inversa e até agora só vimos um membro da DTFT. Ao analisarmos a DTFT, vemos que mesmo que f [n] seja um sequência de números, v ainda é um domínio contínuo, ou seja, a DTFT está relacionando um domínio discreto a um domínio contínuo o que nos remete a relação da Série de Fourier.

SÉRIE DE FOURIER Direta

X[n] = T^1

∫^ T^2

− T 2

x(t)exp(−i. 2 .π. nT t)dt

Inversa x(t) =

n∑=∞ n=∞

X[n]exp(i. 2 .π. T n.t)

2 DESENVOLVIMENTO TEÓRICO

Ao analisar a SF inversa vemos que a DTFT se torna idêntica a ela considerando T = 1 e t = v. Assim, para obter a DTFT inversa nada mais certo do que o já deduzido para a Série de Fourier. Obtemos então:

DTFT Direta X(v) =

n∑=∞ n=∞

X[n]exp(−i. 2 .π.n.v) (5) Inversa

x[n] =

∫^12

− (^12)

X(V )exp(i. 2 .π.n.v)dt (6)

A diferença de sinais da exponencial, assim como na Transformada de Fourier, é apenas conven- ção, bastando que sejam opostos. Queremos então encontrar a representação espectral de um sinal discreto e a DTFT realmente nos da essa representação do sinal discreto. No entanto, ela ainda não satisfaz totalmente nossa necessidade de fazer análises computacionais, pois ela ainda envolve domínios contínuos. Então, apesar de termos avançado no entendimento e no nosso objetivo, tendo obtido uma relação entre o sinal discretizado e sua TF, temos que, do outro lado, ainda há o domínio continuo v. Portanto, para o objetivo final de obter tudo em um domínio discreto, precisamos de uma representação espec- tral no domínio da frequência que também seja discreta e é por isso que definiremos a DFT, a qual irá nos permitir representar o sinal discretizado por uma função discreta, ou melhor, irá nos permitir tornar o resultado da DTFT discreto, resumidamente, a DFT converterá o dominio v em um domínio k discreto. Se olharmos para a DTFT, vemos que x[n] está sendo obtido por meio da integral de X(v) que corresponde a um domínio contínuo e é justamente isso que queremos resolver agora. Da experiência anterior, observamos também que quando discretizamos um domínio por meio de amostras, o outro domínio se torna períodico. Nesse sentido, será então que se discretizarmos X(v), obtendo algumas amostras, conseguimos recuperar x[n]? ou ainda, o equivalente para o sinal contínuo: conseguiriamos recuperar x(t) somente com algumas amostras de X(f)? Caso consigamos mostrar isso para o sinal contínuo, estará provado para DTFT, já que ela é a TF multiplicada por um trem de impulso com período 1.

2 DESENVOLVIMENTO TEÓRICO

amostras de Fi(f ), ou seja, apenas pontos com frequências fk = k/N (N = λ) obteremos uma função períodica de período N.

fi 2 (t) =

k∑=∞ k=−∞

F (fk)exp(i 2 π N kt) (9) Onde F (fk) é a TF e também a DTFT de fi(nTa) = f [n] nos pontos de frequência fk, ou seja, estamos calculando a DTFT nos pontos em que v = fk. Assim podemos escrever:

F (fk) = F [k] =

k∑=∞ k=−∞

f [n]exp(−i 2 π N kn) (10) Além disso, cabe relembrar que f[n] é um sinal e portanto tem suas informações limitadas em um intervalos, assim não precisamos fazer essa soma por todo o domínio de k, basta fazer ela para um intervalo que contenha todas as informações do sinal.Se pegarmos um intervalo com N pontos para realizar a soma, conseguimos calcular corretamente F [k]:

F (fk) = F [k] =

k=∑ N^ − 21 k=− N^2 −^1

f [n]exp(−i 2 π N kn) (11)

Precisamos então achar a operação inversa que queriamos inicialmente. Da equação 9, sabemos que as amostras da DTFT nos fornece fi 2 (t) uma versão periódica de f [n] escalonada, ou seja, se pe- garmos o primeiro período de fi 2 (t) teremos nosso f [n]. Assim, delimitando o n do período original:

f [n] = N^1 fi 2 (n) = N^1

k∑=∞ k=−∞

F [k]exp(i 2 π N kn) para − N^2 − 1 < n < N^ − 2 1 (12) Como a DTFT é periódica com período igual a 1 só precisamos fazer essa soma sobre um período. Estamos pegando amostras espaçadas de 1 /N e o período é 1, logo temos N amostras em um período. Desta forma, basta que a da soma da equação 12 possua N elementos para que seja feita sobre todo um período, assim definimos o par DFT:

DFT Direta F (fk) = F [k] =

∑^ N

n=

f [n]exp(−i 2 π N kn) para 1 < k < N (13)

3 APLICAÇÃO NO MATLAB

DFT Inversa

f [n] = N^1

∑^ N

k=

F [k]exp(i 2 π N kn) para 1 < n < N (14) Como podemos ver, a DFT possui os dois domínios discretos e assim conseguimos calculá-la completamente no computador e é isso que veremos na seção a seguir.

3 Aplicação no MATLAB

Nesta seção, com o exposto sobre a DFT e a DTFT, vamos de fato entender como relacionar a Transformada de Fourier com o que a função f f t do MATLAB nos fornece. Para isso, primeiro vamos entender a relação entre a TF e a DTFT e depois iremos utilizar o comando fft para obter a TF. Inicialmente, temos nosso sinal contínuo x(t) que escolhi como sendo a função gaussiana:

x(t) = Ae−(^ σt^ )^2 (15) Onde escolhi a amplitude A = 5 e a largura temporal σ = 10. Essa função gaussiana possui a seguinte expressão para sua transformada de Fourier Analítica:

X(f ) = Aσ√πe−(f πσ)^2 (16) Da equação 16 podemos notar que X(f ) é um espectro infindável, porém o decaimento expo- nencial faz com ele possua uma amplitude muito pequena a partir de uma certa frequência. Assim, conseguimos definir uma frequência máxima para X(f ). Para visualizarmos x(t) e X(f ), plotaremos essas funções no MATLAB com uma grande quan- tidade de pontos para que a interpolação deles nos forneçam a forma do gráfico contínuo dessas funções, mesmo que sejam discretas (já que estamos plotando no computador). Diante disso, eu amostrei essas funções com M = 12. 000 pontos e com um período de amostra- gem Ta = 0. 1 s e consequente frequência de amostragem fa = 10hz. Lembrando que esse período de amostragem é o intervalo de tempo no qual os pontos são registrados, o que no código corresponde ao passo com que o gráfico é plotado. Assim, definido x(t) pude, com o código da figura 5 plotar a função gaussiana:

3 APLICAÇÃO NO MATLAB

Figura 8: Código para calcular e plotar TF analítica

Figura 9: Transformada de Fourier analítica Figura 10: Transformada de Fourier analítica com zoom

Ao observar o gráfico da figura 10, vemos que a partir da frequência 0. 15 a amplitude da Trans- formada de Fourier já é bastante reduzida, o que é confirmado pela figura 9. Na CommandW indow, obtemos que a X_TF para a frequência 1 é 0 , com base no que vimos, 1 pode ser então nossa frequên- cia máxima. Portanto, a frequência de amostragem de 10hz que foi utilizada está de acordo com as condições do Teorema da Amostragem (fa > 2 f 0 ), que nos permite recuperar o sinal original do sinal amostrado. Agora, iremos calcular computacionalmente a DTFT do sinal amostrado. Para isso, nesse primeiro momento, utilizaremos a fórmula da DTFT da equação 5. No MATLAB, para executar esse cálculo

3 APLICAÇÃO NO MATLAB

precisamos realizar o somatório em n para cada valor fixo de v. Portanto usei um laço que a cada passagem armazena o somatório compondo a F (v), vejamos como foi isso foi efetuado na figura 11:

Figura 11: Código para cálculo da DTFT analítica

Figura 12: Gráfico da DTFT a partir da fórmula analítica

Observando as figuras 9 e 13 podemos ver algumas semelhanças. A DTFT utiliza-se de amostras de x(t), sinal discreto com Ts = 0.1 s.

3 APLICAÇÃO NO MATLAB

Figura 14: Comparação entre a DTFT e a TF Figura 15: Comparação entre a TF e apenas uma cópia da DTFT

Na figura 14 podemos observar que o gráfico em vermelho da Transformada de Fourier sobrepõe apenas um período da DTFT modificada mostrada pelas bolinhas azuis. Isso ocorre, pois, como vimos na equação 2 a convolução de F (f ) com a TF do trem de impulso gera cópias da Transformada de Fourier, porém, como discutimos, para o nosso objetivo só necessitamos de uma cópia, tal como mostrado na figura 15. Com tudo isso, mostramos que alterando corretamente os vetores da DTFT e respeitando a condi- ção do teorema da amostragem conseguimos obter a Transformada de Fourier de um sinal a partir de sua DTFT Agora iremos entender como usar a função f f t do MATLAB para obter nossa Transformada de Fourier. Para isso, continuo usando a função gaussiana x(t), amostrando-a agora com N = 1024 pontos, obtendo assim o sinal discreto x[n]. Além disso, utilizei o mesmo período de amostragem Ta = 0. 1 s que vimos respeitar a condição do Teorema da Amostragem.

3 APLICAÇÃO NO MATLAB

Figura 16: Código para obter e plotar o sinal amostrado

Depois de amostrar a função gaussiana, plotamos o gráfico do sinal, onde é possível ver alguns pontos amostrados utilizando o parâmetro ’b.’ no comando plot.

Figura 17: Código para definir e plotar o sinal amostrado

De posse do sinal, queremos obter seu espectro utilizando a f f t. Vejamos então do que se trata a f f t, por meio do comando “help fft”:

3 APLICAÇÃO NO MATLAB

Figura 20: Gráfico da fft

Figura 21: Gráfico da fft aplicando fftshift

Sabendo a que corresponde cada ponto obtido com os comandos fft e fftshift conseguimos plotar corretamente a nossa DTFT. Por meio do vetor fornecido pelo comando fft, consegue-se plotar a correspondente DTFT de 0 a 1, portanto precisamos definir nosso vetor v de acordo com isso. Vimos que a DTFT tem período 1 e nossas amostras estão espaçadas de (^) N^1 , o que faz com que nosso vetor v tenha N pontos. Esse

3 APLICAÇÃO NO MATLAB

espaçamento entre as amostras é então o passo do nosso vetor v. Basta comparar a equação 13 com a equação 5 para ver que v corresponde ao (^) Nk ou k^ N− 1 no caso da fft. Além disso vemos que há uma diferença quanto aos índices do somatório, enquanto na equação 5 n vai de −∞ até ∞, na equação 13 ele só vai de 1 até N. Contudo, como só temos interesse em um período para obter a TF essa diferença não afetará o resultado.

Figura 22: Código para plotar a DTFT em dois intervalos diferentes

Assim, pude plotar a DTFT intervalo de 0 a 1 utilizando a fft:

Figura 23: Gráfico da DTFT de 0 a 1

Além disso, utilizando o fftshift, que sabemos que nos fornece o correspondente a DTFT de -0.