{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"FMP\"\n", "\"AudioLabs\"\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"C1\"\n", "

DFT: Phase

\n", "
\n", "\n", "
\n", "\n", "

\n", "Computing a discrete Fourier transform results in complex-valued Fourier coefficients. Each such coefficient can be represented by a magnitude and a phase component. Follow Section 2.3.2 of [Müller, FMP, Springer 2015], we discuss in this notebook the role of the phase component. \n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polar Representation of Fourier Coefficients\n", "\n", "Let $x=(x(0), x(1), ..., x(N-1))$ be a signal with samples $x(n)\\in\\mathbb{R}$ for $n\\in[0:N-1]$. The complex Fourier coefficient $c_k:=X(k)\\in\\mathbb{C}$ for $k\\in[0:N-1]$, as computed by the [discrete Fourier transform (DFT)](../C2/C2_DFT-FFT.html), is given by\n", "\n", "$$ \n", "c_k :=X(k) = \\sum_{n=0}^{N-1} x(n) \\exp(-2 \\pi i k n / N). \n", "$$\n", "\n", "Let $c_k = a_k + i b_k$ with real part $a_k\\in\\mathbb{R}$ and imaginary part $b_k\\in\\mathbb{R}$. Recall from the [FMP notebook on complex numbers](../C2/C2_ComplexNumbers.html) that the **absolute value** is defined by \n", "\n", "$$|c_k| := \\sqrt{a_k^2 + b_k^2}$$\n", "\n", "and the **angle** (given in radians) by\n", "\n", "$$\\gamma_k := \\mathrm{angle}(c_k) := \\mathrm{atan2}(b_k, a_k) \\in [0,2\\pi).$$\n", "\n", "Using the [exponential function](../C2/C2_ExponentialFunction.html), this yields the **polar coordinate representation**\n", "\n", "$$\n", " c_k = |c_k| \\cdot \\mathrm{exp}(i \\gamma_k).\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimality Property\n", "\n", "Let $\\mathbf{cos}_{k,\\varphi}:[0:N-1]\\to\\mathbb{R}$ be a sampled sinusoid of with frequency parameter $k$ and phase $\\varphi\\in[0,1)$, defined by\n", "\n", "$$\n", " \\mathbf{cos}_{k,\\varphi}(n) = \\sqrt{2}\\mathrm{cos}\\big( 2\\pi (kn/N - \\varphi) \\big)\n", "$$\n", "\n", "for $n\\in[0,N-1]$. Intuitively speaking, when computing the Fourier transform for some discrete signal $x$ of length $N$ and for some frequency parameter $k$, one computes an inner product (a kind of correlation) of the signal $x$ and the sinusoid $\\mathbf{cos}_{k,\\varphi_k}$. The phase $\\varphi_k$ has the remarkable property that it maximizes the correlation between $x$ and all possible sinusoids $\\mathbf{cos}_{k,\\varphi}$ with $\\varphi\\in[0,1)$. In other words:\n", "\n", "$$\n", " \\varphi_k = \\mathrm{argmax}_{\\varphi\\in[0,1)} \\langle x | \\mathbf{cos}_{k,\\varphi} \\rangle. \n", "$$\n", "\n", "The complex Fourier coefficient $X(k)$ encodes this optimal phase, which is basically given by the angle of the complex number. More precisely, let $\\gamma_k$ be the angle of $X(k)$, then one can show that the optimal phase $\\varphi_k$ is given by\n", "\n", "$$\n", " \\varphi_k := - \\frac{\\gamma_k}{2 \\pi}.\n", "$$\n", "\n", "In the following code cell, we demonstrate this optimality property." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:58:36.394127Z", "iopub.status.busy": "2024-02-15T08:58:36.393764Z", "iopub.status.idle": "2024-02-15T08:58:38.928527Z", "shell.execute_reply": "2024-02-15T08:58:38.927998Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sinusoid with phase from Fourier coefficient resulting in an optimal correlation.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Sinusoid with an arbitrary phase resulting in a medium correlation.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Sinusoid with a phase that yields a correlation close to zero.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import os\n", "import sys\n", "\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "\n", "sys.path.append('..')\n", "import libfmp.b\n", "import libfmp.c2\n", "import libfmp.c6\n", "\n", "%matplotlib inline\n", "\n", "# Generate a chirp-like test signal (details not important)\n", "N = 256\n", "t_index = np.arange(N)\n", "x = 1.8 * np.cos(2 * np.pi * (3 * (t_index * (1 + t_index / (4 * N))) / N))\n", "\n", "k = 4\n", "exponential = np.exp(-2 * np.pi * 1j * k * t_index / N)\n", "X_k = np.sum(x * exponential)\n", "phase_k = - np.angle(X_k) / (2 * np.pi)\n", "\n", "def compute_plot_correlation(x, N, k, phase):\n", " sinusoid = np.cos(2 * np.pi * (k * t_index / N - phase)) \n", " d_k = np.sum(x * sinusoid)\n", " plt.figure(figsize=(6,1.5))\n", " plt.plot(t_index, x, 'k')\n", " plt.plot(sinusoid, 'r')\n", " plt.title('Phase = %0.2f; correlation = %0.2f (optimal = %0.2f)' % (phase, d_k, np.abs(X_k)))\n", " plt.tight_layout()\n", " plt.show()\n", "\n", "print('Sinusoid with phase from Fourier coefficient resulting in an optimal correlation.') \n", "compute_plot_correlation(x, N, k, phase=phase_k)\n", "\n", "print('Sinusoid with an arbitrary phase resulting in a medium correlation.') \n", "compute_plot_correlation(x, N, k, phase=0.4)\n", "\n", "print('Sinusoid with a phase that yields a correlation close to zero.') \n", "compute_plot_correlation(x, N, k, phase=0.51)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Meinard Müller.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\"C0\"\"C1\"\"C2\"\"C3\"\"C4\"\"C5\"\"C6\"\"C7\"\"C8\"
" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" } }, "nbformat": 4, "nbformat_minor": 1 }