Project B: A Program to Demonstrate the Fourier Transform Technique in NMR Spectroscopy.



Many types of physical measurement in chemistry involve obtaining data as a function of time ('time domain' data). In NMR spectroscopy for example the spectrometer actually measures a set of frequencies as a function of time by monitoring the 'Free Induction Decay'. This signal actually looks like a decaying cosine wave, but when many such waves are superimposed, the resultant signal is almost impossible to interpret visually. The technique of Fast Fourier Transform (FFT) transforms the 'time domain' signal into a 'frequency domain' signal, where each characteristic frequency is displayed as a single line rather than as a cosine wave. This project involves writing a program to generate a defined number of cosine curves (ca 1-5), to add them together, to weight them by multiplying by an exponential function and then to Fourier transform the result. Such a program can be used to illustrate many of the fundamental properties of the FFT technique as applied in chemical instrumentation. The actual Fast Fourier Transform routine (FASTF) is provided for you automatically when you link the program. You just write the rest!

Procedure to calculate a Fourier Transform

Use the command ugfor to enter the Fortran environment on the Indigo workstations. In the instructions below, you do not need to derive any equations, which are shown in bold type, along with any variables that you need to define.

Procedure to Display a Fourier Transform

The final stage is to display this data and to obtain 'hardcopy'. Write out in your program the N values of the integer n-1 and the arrays BROAD(n), FID(n), XREAL(n) and XIMAG(n) in the following format to the file cricket.dat;



0 TAB 1.0000 TAB 1.0000 TAB 0.0228 TAB 0.0000

1 TAB 0.9922 TAB 0.1111 TAB 0.0241 TAB 0.0726


N N N N/2 N/2

The first row after the * contains the five titles of each column (the above are only suggestions, you can try your own). These will appear eventually to identify the data in the plotting program. TAB means write out character variable TAB = CHAR(9) between each column of data. Using this method, you can write out the full N points of the Time/Freq, BROAD and FID arrays, and only N/2 points of the XREAL and XIMAG arrays. Remember however, that only the first N/2 values of XREAL(n) and XIMAG(n) represent the actual spectrum. Can you interpret what the values of XREAL(1 + N/2) through to XREAL(N) correspond to by inspection of the resultant graphs?

Transfer the file cricket.dat to a Macintosh Computer located in room 170 and plot the contents using the program Cricket Graph. See here on how to mount an Indigo file on a Macintosh

If you want to see how the output of the program should look, you can try running the "executable" only version of the program by typing


from the console window. The project handed in should of course correspond to your own listing of this program.

Copyright (c) B. P. Levitt, H. S. Rzepa and ICSTM Chemistry Department, 1994.
Return to Index page