How would I use FFT for derivatives?

I would like to implement an FFT method to differentiate a signal (spectrum). Why use this instead of N-point derivatives? Primarily for the improved rigor of the method as opposed to N-point. More importantly, I want to build a chain that does this ...


  • FFT a spectrum
  • cut noise above a specific frequency
  • differentiate
  • measure a characteristic parameter in the derivative


I've got the tools to do the FFT and remove the noise. I know how to get this to work well, and I know it is a more rigorous smoothing method than N-point smoothing. I don't yet have the full appreciation of the derivative in FFT space. I found this reference ...

http://math.mit.edu/~stevenj/fft-deriv.pdf

... and note in particular Algorithm 1 on page 5. I think this can be directly implemented in Igor Pro. Has anyone gone down this path to do a derivative in FFT space?
The derivative property used to be taught in the first or second lecture on Fourier Transform. I have not seen it used much in practical computation.

There is a brief discussion of this topic in the Image Processing Tutorial. Execute
DisplayHelpTopic "Using the Fast Fourier Transform"
and look for "Calculating derivatives". This is equivalent to algorithm 1 in your reference, except for the scaling factors which are usually irrelevant.

I'm not sure why you would choose to use this approach to compute the derivative (unless you are looking for MatrixOP applications :). Although the method is fast, it could potentially introduce undesirable sampling artifacts.

A.G.
WaveMetrics, Inc.
Thanks AG. I'll look at the references.

My interest in doing derivatives in the FFT domain is because I will be in that domain for the smoothing operation. Eventually, I would want to check the speed increase too, but only if the proof of concept algorithm that I have in mind proves to be reliably better in precision and accuracy than the current approach taken in the literature (n-point smoothing + n-point derivative).

As to the "artifacts", if you mean Gibb's oscillations at the end points ... yes, I know. I have a "trick" though. I subtract a line, mirror/invert the spectrum through an end point, and add the inversion to the original (doubling the range). Then, I do the FFT and filter out the noise. This eliminates the majority (if not all) of the end-point oscillations when the filtered FFT is inverted back and the "smoothed" spectrum is recovered.

--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH