Você está na página 1de 5

NOTA TCNICA A TRANSFORMADA DE FOURIER EM BASIC Mauricio Gomes Constantino* e Gil Valdo Jos da Silva# Departamento de Qumica - Faculdade

de Filosofia, Cincias e Letras de Ribeiro Preto - Universidade de So Paulo Av. Bandeirantes, 3900 - 14040-901 - Ribeiro Preto - SP Recebido em 26/1/99; aceito em 27/4/99

THE FOURIER TRANSFORM (FFT) IN BASIC. In this paper we describe three computer programs in Basic language about the Fourier transform (FFT) which are available in the Internet site http://artemis.ffclrp.usp.br/SoftwareE.htm (in English) or http://artemis.ffclrp.usp.br/ softwareP.htm (in Portuguese) since October 1998. Those are addresses to the Web Page of our Laboratory of Organic Synthesis. The programs can be downloaded and used by anyone who is interested on the subject. The texts, menus and captions in the programs are written in English. Keywords: Fourier transform; FFT; Basic; NMR.

Este artigo apresenta trs programas em linguagem Basic sobre a transformada de Fourier, que esto disponveis no site da Internet http://artemis.ffclrp.usp.br/softwareP.htm (em portugus) ou http://artemis.ffclrp.usp.br/softwareE.htm (em ingls) (partes da Web Page de nosso Laboratrio de Sntese Orgnica) desde outubro de 1998 para serem copiados e usados por quem se interesse pelo assunto. Os textos dos programas esto escritos em ingls para torn-los mais universalmente utilizveis. A transformada de Fourier um processo matemtico extensamente utilizado hoje em dia em espectrometria de RMN, de IV, etc., na forma do engenhoso processo de clculo digital simplificado, desenvolvido por vrios autores 1, denominado FFT (Fast Fourier Transform). A simplificao introduzida por esse algoritmo reduz as operaes necessrias de N2 multiplicaes complexas para N log2 N multiplicaes (N o nmero de pontos da funo a ser transformada). Essencialmente a transformada de Fourier consiste em, dada uma quantidade h como funo do tempo [h(t)], determinar a correspondente quantidade H como funo da freqncia [H(f)], geralmente como um nmero complexo que tambm indica a fase, e vice-versa: dada H(f), determinar h(t). Neste artigo referimo-nos, naturalmente, a clculo numrico, onde h(t) uma coleo de N nmeros que indicam, por exemplo, a intensidade em funo do tempo de certa funo peridica; a transformada de Fourier correspondente ser outra coleo de N nmeros que indicaro a intensidade de cada freqncia presente na funo peridica original. Inversamente, se forem conhecidas as intensidades das freqncias, a transformada fornecer a funo h(t). Um exemplo simples seria a voz de uma pessoa emitindo um som determinado por, digamos, 1 segundo. A voz provoca uma oscilao do ar, que pode ser captada por um microfone, convertida em oscilao eltrica, e gravada. Um computador pode ler essa oscilao como uma coleo de pontos (nmeros) que indicam a intensidade em funo do tempo; a transformada de Fourier, aplicada a esses pontos, fornecer um mapa das vrias freqncias que compem o som da voz, na forma de uma funo intensidade x freqncia. Se na funo original o tempo em segundos, na transformada a freqncia ser em Hz. Algo semelhante ocorre, por exemplo, no espectrmetro de RMN. O aparelho capta uma oscilao eletromagntica emitida pelos ncleos dos tomos e grava essa oscilao como uma
* #

e-mail: mgconsta@usp.br e-mail: gvjdsilv@usp.br

coleo de nmeros que indicam a intensidade em funo do tempo. A transformada de Fourier fornecer um mapa das freqncias que compem a oscilao, mapa esse que chamamos de espectro de RMN. Na literatura h muitos trabalhos que apresentam explicaes bem detalhadas sobre vrios aspectos da transformada de Fourier. Recomendamos em especial o livro Numerical Recipes2, de onde foi retirada a rotina bsica para elaborao de nossos programas. No nos estenderemos, portanto, em maiores consideraes sobre a transformada em si. O principal objetivo de nossos programas de natureza pragmtica. Pretendemos, com eles, dar um exemplo prtico de como elaborar certas rotinas para obter um efeito desejado, sendo esses exemplos completos dentro de seus objetivos, sem deixar pontas desatadas. A linguagem Basic a mais simples das linguagens de programao, e pode ser aprendida com rapidez e facilidade. O Visual Basic3 desenvolvido pela Microsoft muito verstil e incorpora inmeras vantagens prprias de outras linguagens, tornando-se em mtodo ideal para elaborao de programas relativamente pequenos, principalmente se desenvolvidos por pessoas cujo objetivo principal em pesquisa esteja voltado para outros aspectos, sendo a programao uma ferramenta e no um objetivo em si, como o nosso caso. Decidimos experimentar a elaborao de programas de FFT em Basic, e ficamos surpresos com a qualidade dos resultados, em boa parte devida, naturalmente, grande rapidez e capacidade de memria dos computadores usados hoje em dia. Procuramos, dentro de limites razoveis, explorar a grande variedade de recursos do Visual Basic nesses programas, para ampliar sua utilidade como exemplos. Em um dos programas, por exemplo, no dimensionamos variveis na seo de Declaraes; todos os dados que pretendamos usar em outras rotinas foram armazenados em Lists, Labels, etc. Nos outros programas, ao contrrio, fizemos extenso uso das variveis dimensionadas para serem usadas em vrias rotinas diferentes, sem recorrer a Lists. Muito variados, tambm, so os exemplos de como fazer grficos, como traar escalas, fazer ampliaes, obter dados, movimentar os grficos, etc. Atendendo a nossos objetivos didticos, evitamos repetir rotinas, procurando sempre usar mtodos alternativos para vrios tipos de procedimentos. Ao mesmo tempo, evitamos tambm a utilizao de mtodos desnecessariamente complexos, optando sempre pelas solues mais simples que nos ocorreram. A seguir apresentamos sumariamente as caractersticas de cada um dos trs programas.
413

QUMICA NOVA, 23(3) (2000)

FFT SpecMusEV Este programa, inicialmente, gera dados correspondentes a vrias funes peridicas, desde simples sen x, cos x, onda quadrada e onda triangular, at funes mltiplas que so o resultado da soma de at 10 funes sen x n ou cos xn. Os dados referidos acima correspondem ao valor da funo especificada para 1024 pontos, distribudos uniformemente ao longo de uma janela arbitrria de 1 segundo; traado um grfico desses pontos, permitindo a visualizao da funo peridica. Em seguida esses dados so submetidos ao clculo da transformada de Fourier, e o resultado mostrado em outro grfico, que pode ser (lembrando que o resultado uma coleo de nmeros complexos) do mdulo ou vetor r, somente da parte imaginria, somente da parte real, ou parte real e imaginria simultaneamente. Usando esse ltimo grfico, por exemplo, fica muito fcil ver que (com fase = 0) a funo sen x produz resultado somente na parte imaginria, enquanto a funo cos x apresenta resultado somente na parte real; alterando os valores das fases na funo original, pode-se ver facilmente a alterao correspondente de intensidade nas partes real e imaginria. A Figura 1 mostra a tela inicial apresentada pelo programa, onde j se pode ver como a transformada de Fourier determinou corretamente as freqncias presentes na funo mltipla original, definida pela frmula f(t) = an Sen(2vnt + n )
n

dados de um arquivo *.raw (que pode ser obtido a partir de um arquivo *.wav qualquer atravs dos programas que acompanham os kits multimedia) e calcular a correspondente transformada de Fourier. A Figura 2 mostra o resultado do clculo realizado com o acorde inicial de Moonlight Serenade, de Glenn Miller: as pequenas linhas verticais mostram as harmnicas de um instrumento que est tocando si bemol, e o cursor (linha vertical grande) foi colocado prximo freqncia que corresponde nota principal da melodia, mostrando que ela um d (C5). O teclado musical desenhado sob o grfico foi construdo de maneira a corresponder s freqncias corretamente, permitindo fcil identificao da nota musical.

vn = bn n de ciclos

(o

)
Figura 2. Transformada de Fourier de um arquivo *.raw pelo programa FFT SpecMusEV.

e pelos parmetros visveis na parte esquerda da tela. As amplitudes correspondentes a cada freqncia so tambm facilmente avaliadas (correspondendo ao parmetro a da tabela). Naturalmente, os parmetros podem ser alterados vontade para produzir uma enorme variedade de resultados.

Devido ao mtodo usado para armazenar dados em Lists, esse programa est limitado em seus clculos a 16384 pontos. H, naturalmente, outras limitaes, mas o leitor poder verificar que o programa muito til para sua finalidade didtica. possvel tambm imprimir grficos e gerar bitmaps da transformada de Fourier. FFT SpecEV Este programa mostra como a transformada de Fourier pode ser utilizada para processar os dados obtidos de um espectrmetro de ressonncia magntica nuclear, transformando a curva fid obtida do espectrmetro em um espectro de RMN. Infelizmente as caractersticas das curvas fid e o formato dos arquivos so diferentes para diferentes espectrmetros; um programa que pudesse ler e manipular os dados de vrios tipos de espectrmetros seria de complexidade maior do que nossos objetivos e disponibilidades permitem, de forma que julgamos mais apropriado escrever o programa para ler arquivos apenas do espectrmetro Bruker. Um arquivo fid lido com este programa apresentado como grficos das partes real e imaginria separadamente. Veja a Figura 3, que mostra o grfico do arquivo fid correspondente ao espectro de 1H RMN do xido de isoforona:

Figura 1. Tela inicial do programa FFT SpecMusEV.

A Figura 1 permite que o leitor possa ter uma idia de outros aspectos do programa: possvel fazer expanses do grfico, visualizar harmnicas, ver um grfico da FFT com escala logartmica, realizar o clculo inverso (isto , partindo dos dados da transformada, recalcular os dados da funo original: o resultado fornecido como grficos e como uma tabela contendo os dados originais e os recalculados), etc. Um aspecto bem diferente, porm, que o programa pode ler

414

QUMICA NOVA, 23(3) (2000)

Figura 3. Curvas fid correspondendo ao espectro de 1H RMN de xido de isoforona, como apresentadas pelo programa FFT SpecEV.

Figura 5. Espectro de 1H RMN de xido de isoforona durante o processo de ajuste de fase pelo programa FFT SpecEV.

Clicando em FFT (observar Figura 3) sero apresentados grficos da transformada de Fourier; como no programa anterior, possvel ver grficos de mdulo, da parte real e da parte imaginria da transformada, ou passa-se para a etapa de ajuste de fase. Aqui (V. Figura 4) mostrado inicialmente apenas o grfico da parte real.

Figura 6. Espectro de 1H RMN de xido de isoforona j processado para impresso, pelo programa FFT SpecEV

Figura 4. Espectro de 1H RMN de xido de isoforona antes de efetuar a correo para o filtro Bruker, como apresentado pelo programa FFT SpecEV.

Como o leitor pode observar, esse grfico contm uma forte oscilao, que resultante de certo filtro utilizado pelo espectrmetro Bruker; para eliminar essa oscilao realizamos os clculos sugeridos por Westler4, que afirma t-los desenvolvido empiricamente por no ter conseguido da Bruker a informao necessria sobre os filtros. Aps esses clculos o espectro mostra-se como na parte direita da Figura 5; na janela esquerda da mesma Figura 5 observa-se parte do espectro j com a fase parcialmente ajustada. O ajuste de fase consiste em uma combinao da parte real com a parte imaginria; em nosso programa os clculos so feitos com as frmulas fornecidas pelo manual do instrumento Bruker DPX-300. Aps o ajuste de fase, passa-se o espectro para outra janela para prepar-lo para impresso. Na Figura 6 observa-se esse mesmo espectro, incluindo uma pequena expanso do aglomerado que aparece no centro.

O programa pode imprimir esse espectro, mas no foi desenvolvido com essa finalidade. Os programas que acompanham os espectrmetros so muito completos e de excelente qualidade, no h necessidade de substituio. Nosso objetivo, lembramos, didtico: lendo as rotinas, qualquer interessado pode ver e compreender como so feitos os clculos e elaborados os grficos e pode at, se quiser, desenvolver rotinas para atender a seus requisitos especiais. Nada disso possvel com os programas comuns, disponveis apenas na forma de arquivos executveis, que no podem ser lidos, interpretados nem modificados. FFT MusEV Com este programa possvel fazer anlises, pela transformada de Fourier, de sons gravados em arquivos *.wav, os arquivos de som do Windows. Um arquivo *.wav pode ser gravado a partir de um CD comum ou mesmo a partir de um microfone, utilizando os programas que normalmente acompanham os kits multimedia. O arquivo *.wav lido e apresentado na forma de um grfico, como se pode ver na Figura 7. Clicando em Play podese ouvir o som correspondente ao grfico. Na Figura 7 apresentado o grfico correspondente abertura do Capricho Italiano, de Tschaikowski, que um solo em

QUMICA NOVA, 23(3) (2000)

415

de fato, a nota executada pela flauta encontra-se aproximadamente a meio caminho entre C6 e C#6.

Figura 7. Grfico de um arquivo *.wav apresentado pelo programa FFT MusEV, mostrando uma parte j selecionada e pronta para ser submetida transformada de Fourier.

estilo militar de um instrumento de metal (provavelmente um trompete em f ou em mi o leitor certamente perdoar nossa ignorncia musical, que no nos permite resolver essa dvida); uma nica nota (a primeira) est selecionada nesse grfico, e a Figura 8 mostra a transformada correspondente a esse som. O leitor, possivelmente, ficar surpreso com a grande riqueza de harmnicos desses instrumentos de metal. Na Figura 8 o cursor (longa linha vertical) foi colocado prximo freqncia fundamental (correspondente ao som que se ouve), mostrando que a nota executada um mi (mi4 ou E4), e as pequenas linhas verticais mostram as harmnicas dessa freqncia.

Figura 9. Grfico similar ao da Figura 8, correspondendo agora a um som de flauta, pelo programa FFT MusEV.

O leitor pode facilmente perceber a versatilidade do programa para anlises de sons musicais. Deve-se notar que o teclado apresentado aqui ativo, podendo emitir sons de vrios instrumentos selecionveis pelo menu correspondente. CONCLUSO Os programas apresentados do um exemplo bem completo e variado de como utilizar a transformada de Fourier para diferentes finalidades. Como esto escritos em Basic, o leitor tem acesso a todas as rotinas livremente, podendo compreender, adaptar, aperfeioar, modificar ou mesmo copiar as rotinas para us-las em outros programas. Uns poucos comentrios escritos dentro das prprias rotinas podem auxiliar a compreenso. Mesmo quem no se interesse pelo assunto principal (a transformada de Fourier) pode aproveitar os programas para aprender ou enriquecer seus conhecimentos de Basic para fazer grficos, ler arquivos, etc. Um grande nmero de pesquisadores acha que programao de computadores assunto demasiado complexo, e fica merc dos programadores profissionais que so extraordinariamente competentes mas nem sempre compreendem (ou conhecem, ou valorizam) os problemas especficos de todos os pesquisadores. Esperamos com este trabalho estar tambm contribuindo para encorajar pesquisadores a desenvolverem seu prprios programas, mesmo que pequenos, para resolverem problemas especficos com maior eficincia e rapidez. AGRADECIMENTOS

Figura 8. Grfico da transformada de Fourier da parte selecionada na Figura 7, mostrando as freqncias harmnicas, pelo programa FFT MusEV

Os autores agradecem FAPESP e ao CNPq pelo apoio financeiro, e ao Prof. Dr. Lo Degrve por valiosas sugestes. REFERNCIAS E NOTAS

Na Figura 9 mostrado o grfico da transformada de Fourier correspondente terceira nota do Chorinho Didtico no 6 de Altamiro Carrilho, de gravao executada pelo prprio compositor; trata-se de uma nica nota musical (C6, segundo a partitura) executada apenas pela flauta. bem visvel o contraste entre as Figuras 8 e 9; o som da flauta muito mais puro, apresentando apenas pequena quantidade de harmnicos. Na Figura 9 o cursor foi colocado exatamente sobre a freqncia de C6, mostrando que nessa gravao foi utilizado um padro de afinao diferente do usado no programa (A4 em 440 Hz);

1. Como observado na referncia 2, pg. 391, o algoritmo para FFT tornou-se conhecido nos anos 60 atravs do trabalho de J. W. Cooley, J. W. Tukey e R. L. Garwin, mas outros autores j haviam desenvolvido o sistema muitos anos antes, como o caso de Danielson e Lanczos (1942). 2. Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; Vetterling, W. T.; Numerical Recipes, Cambridge University Press, Cambridge, 1986.

416

QUMICA NOVA, 23(3) (2000)

3. O Visual Basic fornecido ao usurio em vrias verses mais ou menos completas. Utilizamos a verso Visual Basic 5.0 Professional; se o leitor utilizar uma verso menos completa poder sentir falta de alguns recursos.

4. Westler, W. M.; Abildgaard, F.; DMX Digital Filters and Non-Bruker Offline Processing III, July 16, 1996. Texto proveniente da University of Wisconsin, localizado atravs da Internet, pelo site http://www.nmrfam.wisc.edu/ Personnel/milo.html

QUMICA NOVA, 23(3) (2000)

417