Conventions and BackgroundΒΆ

Fourier Transform. Our frequency-demodulation algorithm implements the Hilbert Transform indirectly, via a Discrete Fourier Transform (DFT). We use the numpy.fft package [1] to carry out the DFT. This package defines the Fourier transform of the signal \(a_n\) (having \(N\) data points, \(n = 0, 1, .\ldots, N - 1\)) as

(1)\[A_k = \sum_{n = 0}^{N - 1} a_n \: e^{-2 \pi \imath \, n k / N}\]

while the inverse Fourier transform is defined as

(2)\[a_n = \frac{1}{N} \sum_{k = 0}^{N-1} A_k \: e^{\: 2 \pi \imath \, n k / N}.\]

In the derivations presented below, we will have need of the continuous Fourier transform. The continuous analog of the forward transform (equation (1)) is

(3)\[\hat{a}(f) = \int_{-\infty}^{+\infty} dt \: a(t) \: e^{-2 \pi \imath f t }\]

while the continuous analog of the inverse transform (equation (2)) is

(4)\[a(t) = \int_{-\infty}^{+\infty} df \: \hat{a}(f) \: e^{\: 2 \pi \imath f t }\]

We thus define our Fourier transform in terms of the frequency variable \(f \: \sim \: [\text{cycles/s} = \text{Hz}]\) and not \(\omega = 2 \pi f \: \sim \: [\text{radians/s}]\). While this transform-variable convention agrees with the convention espoused by Numerical Recipes [2], the sign of the exponent in the numpy.fft DFT (\(-2 \pi \imath \, n k / N\)) is different from the sign of the exponent in the Numerical Recipes DFT (\(+2 \pi \imath \, n k / N\)).

In the following tutorials we define a correlation function and power spectrum based on the Fourier transform conventions of equations (3) and (4). The results of the tutorials can be summarized as follows.

Cantilever Thermomechanical Fluctuations. We characterize a microcantilever by its resonance frequency \(f_0 \: [\mathrm{Hz}]\), ringdown time \(\tau_0 \: [\mathrm{s}]\), and frictional coefficient \(\Gamma \: [\mathrm{N} \mathrm{s} \mathrm{m}^{-1}]\). The cantilever experiences a stochastic force arising from its interaction with the environment that gives rise to thermal fluctuations in cantilever position. In the first tutorial we show that, for a microcantilever in thermal equilibrium at temperature \(T\), the resulting power spectrum of these thermal fluctuations in cantilever position is given by

(5)\[P_{\delta z}(f) = \frac{k_b T \tau_0^2}{\Gamma} \frac{1}{(\pi \tau_0)^4 (f_0^2 - f^2)^2 + (\pi \tau_0)^2 f^2}\]

with \(k_b\) Boltzmann’s constant and \(T\) the temperature. Assuming that the cantilever’s temperature is known, we can fit the observed power spectrum of position fluctuations to equation (5) to obtain \(f_0\), \(\tau_0\), and \(\Gamma\). In terms of the quantities in equation (5), the cantilever spring constant and quality factor are computed as \(k = 2 \pi^2 f_0^2 \tau_0 \Gamma \: [\mathrm{N} \: \mathrm{m}^{-1}]\) and \(Q = \pi f_0 \tau_0 \: [\mathrm{unitless}]\), respectively.

Cantilever Frequency Noise. Both thermomechanical position fluctuations and detector noise contribute to the noise observed in the cantilever frequency determined using the algorithm described in the Introduction. In the second tutorial we show that these two noise sources give rise to apparent fluctuations in cantilever frequency whose power spectrum is given by

(6)\[P_{\delta f}(f) = \frac{1}{x_{\mathrm{rms}}^2} \left( \frac{1}{4 \pi^2} \frac{k_b T}{\Gamma} \frac{1}{(\pi \tau_0 f_0)^2} + f^2 P_{\delta x}^{\mathrm{det}} \right)\]

with \(x_{\mathrm{rms}}\) the root-mean-square amplitude of the driven cantilever, \(P_{\delta x}^{\mathrm{det}} \: [\mathrm{m}^2 \: \mathrm{Hz}^{-1}]\) the power spectrum of detector noise written as an equivalent position fluctuation. In writing equation (6), we have assumed for simplicity that \(P_{\delta x}^{\mathrm{det}}(f)\) is independent of frequency in the vicinity of the cantilever resonance at \(f = f_0\).


[1]Discrete Fourier Transform (numpy.fft).
[2]Press, W. H.; Flannery, B. P.; Teukolsky, S. A. & Vetterling, W. T. Numerical Recipes, The Art of Scientific Computing. Cambridge University Press, New York (1986). The current edition (3rd edition; 2007) is available online through