Escolar Documentos
Profissional Documentos
Cultura Documentos
X(f)=4sinc(4f)
Isso pode ser encontrado usando a Tabela de Transformadas de Fourier. Podemos usar o
MATLAB para traçar essa transformada. O MATLAB possui uma função sinc
integrada. No entanto, a definição do MATLAB sinc função é ligeiramente diferente
daquela usada em sala de aula e na tabela de transformação de Fourier. No MATLAB:
sin ( πx )
sinc ( x )=
πx
Assim, no MATLAB escrevemos a transformada, usando sinc (4f), uma vez que o fator
π é embutido na função. Os seguintes comandos do MATLAB traçarão esta
Transformada de Fourier:
>> f=-5:.01:5;
>> X=4*sinc(4*f);
>> plot (f,X)
Nesse caso, a transformada de Fourier é uma função puramente real. Assim, podemos
representá-lo como mostrado acima.
Em geral, as transformadas de Fourier são funções complexas e precisamos representar
graficamente a amplitude e espectro de fase separadamente. Isso pode ser feito usando
os seguintes comandos:
>>plot( f, angle(X))
>>plot(f, angle(X))
X ( f )= ∫ x ( t ) e
− j ϖt
dt
−∞
X ( f )=∫ 1 e
− jϖt
dt
−2
Esta integração pode ser realizada usando o comando trapz no MATLAB. Este
comando tem a forma: trapz (x, y) onde a integral da função y é encontrada em relação à
variável de integração, x. Ou, usando o MATLAB:
>> clear
>> f=0;
>> t=-2:.01:2;
>> trapz(t,exp(-j*2*pi*f*t))
ans =
4.0000
>> clear
>> t=-2:.01:2;
>> k=0;
>> for f=-5:.01:5
k=k+1;
X(k)=trapz(t,exp(-j*2*pi*f*t));
end
>> f=-5:.01:5;
>> plot(f,X)
Isso deve corresponder à transformação na figura acima. Esta técnica também pode ser
usada para aproximar a transformada de Fourier de um sinal de duração infinita.
Digamos que queremos encontrar o espectro de amplitude do sinal de duas frequências:
O primeiro passo seria criar um vetor, x, com valores amostrados da função de tempo
contínuo. Amostrando o sinal a cada 0,0002 segundos e criando uma sequência de
comprimento 250, isso irá cobrir um intervalo de tempo de 250 * 0,0002 = 0,05
segundos. Um gráfico deste sinal é gerado usando o seguinte código MATLAB:
>> clear
>> N=250;
>> ts=.0002;
>> t=[0:N-1]*ts;
>> x=cos(2*pi*100*t)+cos(2*pi*500*t);
>> plot(t,x)
>> k=0;
>> for f=0:1:800
k=k+1;
X(k)=trapz(t,x.*exp(-j*2*pi*f*t));
end
>> f=0:800;
>> plot(f, abs(X))
Como esperado, os picos do espectro estão em 100 e 500 Hz, as duas frequências
contidas em o sinal. Teoricamente, esperamos ver funções de impulso nessas duas
frequências e zero em todas as outras frequências. Não é isso que observamos. Isso
ocorre porque o código MATLAB apenas aproxima a transformação. Existem três
elementos que tornam os resultados aproximados.
A sequência usada para calcular a transformação é uma versão de amostra de um sinal
contínuo. O valor que do intervalo de amostragem (Ts) e o número de amostras tomadas
(N) afetam a aproximação.
Além disso, o comando trapz está usando um somatório para aproximar a integral.
Podemos observar os efeitos do intervalo de amostragem e do número de amostras,
alterando seus valores.
Por exemplo, se aumentarmos o intervalo de amostragem por um fator de 10 (para .002)
e diminuir o número de amostras para 25 (de modo que ainda cobrimos o mesmo
intervalo de intervalo de tempo total), e repita o Código MATLAB acima, obtemos:
Observe que a transformação é mais precisa do que o original. Isso é esperado porque
somos incluiu mais ciclos da forma de onda na aproximação (aumentando os limites de
integração).
Em geral, se uma função de tempo contínuo, x (t), é amostrada a cada Ts segundos até
que N amostras sejamcoletados, o TDF/FFT desta sequência de comprimento N também
é de comprimento N. Os componentes da transformação resultante corresponde a
frequências espaçadas a cada 1 / (N * Ts) Hz.
Por exemplo, usando o mesmo sinal de duas frequências x (t) usado acima, podemos
produzir uma sequência de amostras de comprimento N =250 espaçados a cada Ts
=0,0002 segundos, conforme mostrado anteriormente.
No entanto, desta vez, encontraremos o espectro de amplitude desse sinal usando o
comando fft.
>> clear
>> N=250;
>> ts=.0002;
>> deltaf=1/(N*ts);
>> t=[0:N-1]*ts;
>> x=cos(2*pi*100*t)+cos(2*pi*500*t);
>> Xf=fft(x);
>> f=[0:N-1]*deltaf;
>> plot(f,abs(Xf))
Observe que o espectro mostra quatro componentes. Dois estão nas frequências
esperadas de 100 e 500 Hz. Os outros dois estão em 4500 e 4900 Hz, frequências que
não aparecem no sinal.
Isso se deve à natureza periódica do TDF. Apenas frequências de até 0,5 / Ts
correspondem ao frequências reais na transformada de Fourier. Podemos produzir o
gráfico de espectro que mostra apenas essas frequências e mostra os componentes de
frequência negativa aplicando a função fftshift como mostrado.
>> Xf_shift=fftshift(Xf);
>> plot([-N/2:N/2-1]*deltaf, abs(Xf_shift))
>> clear
>> N=250;
>> ts=.0004;
>> deltaf=1/(N*ts);
>> t=[0:N-1]*ts;
>> x=cos(2*pi*100*t)+cos(2*pi*500*t);
>> Xf=fft(x);
>> Xf_shift=fftshift(Xf);
>> plot([-N/2:N/2-1]*deltaf, abs(Xf_shift))
Observamos que a frequência máxima é agora 1250 Hz, em vez de 2500 Hz como no
original calculado e os componentes de frequência de 100 e 500 Hz ainda são
representados corretamente. No geral, a frequência máxima representada é dada por
0,5 / Ts. Digamos que aumentamos a amostragem intervalo para Ts = 0,00125 conforme
mostrado abaixo:
>> clear
>> N=250;
>> ts=.00125;
>> deltaf=1/(N*ts);
>> t=[0:N-1]*ts;
>> x=cos(2*pi*100*t)+cos(2*pi*500*t);
>> Xf=fft(x);
>> Xf_shift=fftshift(Xf);
>> plot([-N/2:N/2-1]*deltaf, abs(Xf_shift))
Parte Pratica