{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"nbsphinx": "hidden"
},
"source": [
"# The Fourier Transform\n",
"\n",
"*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Communications Engineering, Universität Rostock. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Properties\n",
"\n",
"The Fourier transform has a number of specific properties. They can be concluded from its definition. The most important ones in the context of signals and systems are reviewed in the following."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Invertibility\n",
"\n",
"According to the [Fourier inversion theorem](https://en.wikipedia.org/wiki/Fourier_inversion_theorem), for many types of signals it is possible to recover the signal $x(t)$ from its Fourier transformation $X(j \\omega) = \\mathcal{F} \\{ x(t) \\}$\n",
"\n",
"\\begin{equation}\n",
"x(t) = \\mathcal{F}^{-1} \\left\\{ \\mathcal{F} \\{ x(t) \\} \\right\\}\n",
"\\end{equation}\n",
"\n",
"A sufficient condition for the theorem to hold is that both the signal $x(t)$ and its Fourier transformation are absolutely integrable and $x(t)$ is continuous at the considered time $t$. For this type of signals, above relation can be proven by applying the definition of the inverse Fourier transform to the Fourier transform and rearranging terms\n",
"\n",
"\\begin{equation}\n",
"\\begin{split}\n",
"x(t) &= \\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} \\underbrace{\\int_{-\\infty}^{\\infty} x(\\tau) e^{-j \\omega \\tau} d\\tau}_{X(j \\omega)} \\; e^{j \\omega t} d\\omega \\\\\n",
"&= \\int_{-\\infty}^{\\infty} x(\\tau) \\left( \\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} e^{-j \\omega \\tau} e^{j \\omega t} d\\omega \\right) d\\tau \\\\\n",
"&= \\int_{-\\infty}^{\\infty} x(\\tau) \\delta(t - \\tau) d\\tau = x(t)\n",
"\\end{split}\n",
"\\end{equation}\n",
"\n",
"The solution $\\delta(t - \\tau)$ of the inverse Fourier transform $\\mathcal{F}^{-1} \\{ e^{-j \\omega \\tau} \\}$ in the brackets can be deduced from the [Fourier transform of the Dirac impulse](definition.ipynb#Transformation-of-the-Dirac-Impulse). The invertibility of the Fourier transformation holds also for more general signals $x(t)$, composed for instance from Dirac delta distributions."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Example**\n",
"\n",
"The invertibility of the Fourier transform is illustrated at the example of the [rectangular signal](../continuous_signals/standard_signals.ipynb#Rectangular-Signal) $x(t) = \\text{rect}(t)$. The inverse of [its Fourier transform](definition.ipynb#Transformation-of-the-Rectangular-Signal) $X(j \\omega) = \\text{sinc} \\left( \\frac{\\omega}{2} \\right)$ is computed to show that the rectangular signal, although it has discontinuities, can be recovered by inverse Fourier transformation."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import sympy as sym\n",
"sym.init_printing()\n",
"\n",
"def fourier_transform(x):\n",
" return sym.transforms._fourier_transform(x, t, w, 1, -1, 'Fourier')\n",
"\n",
"def inverse_fourier_transform(X):\n",
" return sym.transforms._fourier_transform(X, w, t, 1/(2*sym.pi), 1, 'Inverse Fourier')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAJMAAABCBAMAAAChqfmsAAAAMFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIruZZhDNMomrdlTvRN05z604AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEQ0lEQVRYCa2XX2gcRRzHv5t0d++ul8thVKgv0UiRaMUr1CIUZSnFhyDpoSLogz0tiD4l5EEQbHNVGoKgSa2CEYonrdpGqdeX+gfh1Fbqn0oPH4qgNilBoSht07RNGtvEmfnd3s7ezs7unVm4zOx3ft/P/mZ2dvcXIOaRleIMqd9C93XJk6hKJ813CXVTnjs1KOPOaLRA2WeiUFvXxkQhE4FaNRdNAk0wCtVdWDHUwOBKoeyrMUg0QfuTTTw29A4mFmKjaoGhqOTiyqEux0Qt06GZYPLfmCgWtvrgPvY3fIJqVF/VdwXaV2lsi4Gy//RZrc9u+M4JZeBlNWqneAxogk9uvOKz9htv+845ag373ct+gQmaewckFFJ+1IQPBLGv+oB2vp0DKOBTDWpvEJWaKWN3wkM94XgxTaIwDWt5yUOZb5TqLA3qpZMTeGzyQZz58fNnRDxbK7NQc9YneHi3y9KgMAH7LNpKmDtCO/gjtqlyDjlTfMHE0X9/raNHZYqw53EeYkG5w9iQrRm95uh66utRw2VgAS94NmXvNO0ZPapSBS5hOwFqz5/bXKxjT9PLXI/iWc3h+bpJ2Tm6h2Q9Kp1Dx3wEqr+2VLUt2kaPc8Nu74F9AlYRM/5kCr7Txs1gzfLh5Lqld6WwoVN3o2t0H365fo+kIuUtEttnh0vu2JunzvF+59euEN3+JqOedhoNU7lGJfTc/EBGBcMG8kEtREmZWlQi1qud2Ef0qEopJIWgbDhaVOqnoCVMsUdfXSiHDQKZXPhYcMTwv2r9AeZzWb+gPdt8TZMVrO+05mYGzVjVRzzimC7neAg3qnva7f3vNq27K83R2/xf9ObM/uh4lYzfE3K28qjR/cq9+uIxVQbGcZUKysoqm2cDw7xAOBdQmdChLvUJ1Q+8EjB1MaU3oHIhr1QJxRyVwPh+ZlCjlKTaBFnGU43b3ubTaBplcpQjXYuXMV8sTZTRe9uhEtA1mev45+ORmy/8/fDV6nvHb/0B9oHJApclD2VlsP8DhpnFPaiM4R/BHseehf0NPkTnpm5nW8m8gbYsuxmPAtNCdi2sFWslUEVPpTKGo9YBl/kLsrOcmTaRLOAY2I3txe95FIXsmQhlsqymSp5KZYzICljEsMO+1NY4q7FmV4/hD47KXHqfZM9EKFZooCItO5UxdVRlw5YtgxZfl+8T6XKRo8yR5ZyQA6geYGveU6mMmUERbIBlxa/CKgjgoafab2dtL27B4/NCZqJ70L56BNjoKqylMma7i0qPA1WBGt5jL2Y56kvgLSFLLkJlyuYJSaQyZoShnuVZ2T8jkRUfp0wBf7G4HnyVxx1CllyEMl87NCiJooxB8p3s0PW7Ni+NY80Duzru+5ZNM+XgADB0cu2vfQerXJZN7U186WWfor/qmkJsUVpu0aewjZUUYmuSNd+aT+EyB6oKtTWpmWot6go7ogLijP8HVYZhxNJHP6UAAAAASUVORK5CYII=\n",
"text/latex": [
"$$\\begin{cases} 1 & \\text{for}\\: \\frac{\\left|{\\frac{1}{t^{2}}}\\right|}{4} > 1 \\\\0 & \\text{otherwise} \\end{cases}$$"
],
"text/plain": [
"⎧ │1 │ \n",
"⎪ │──│ \n",
"⎪ │ 2│ \n",
"⎪ │t │ \n",
"⎨1 for ──── > 1\n",
"⎪ 4 \n",
"⎪ \n",
"⎪0 otherwise \n",
"⎩ "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t, w = sym.symbols('t omega')\n",
"\n",
"X = sym.sinc(w/2)\n",
"x = inverse_fourier_transform(X)\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/pdf": "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b250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0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agoyMCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMgL0NoYXJQcm9jcyAyMSAwIFIKL0VuY29kaW5nIDw8Ci9EaWZmZXJlbmNlcyBbIDQwIC9wYXJlbmxlZnQgL3BhcmVucmlnaHQgNDYgL3BlcmlvZCA0OCAvemVybyAvb25lIC90d28gNTIgL2ZvdXIgL2ZpdmUKL3NpeCAvc2V2ZW4gL2VpZ2h0IDExNiAvdCBdCi9UeXBlIC9FbmNvZGluZyA+PgovRmlyc3RDaGFyIDAgL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udERlc2NyaXB0b3IgMTkgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTggMCBSID4+CmVuZG9iagoxOSAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjE4IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIxIDAgb2JqCjw8IC9laWdodCAyMiAwIFIgL2ZpdmUgMjMgMCBSIC9mb3VyIDI0IDAgUiAvb25lIDI2IDAgUiAvcGFyZW5sZWZ0IDI3IDAgUgovcGFyZW5yaWdodCAyOCAwIFIgL3BlcmlvZCAyOSAwIFIgL3NldmVuIDMwIDAgUiAvc2l4IDMxIDAgUiAvdCAzMiAwIFIKL3R3byAzMyAwIFIgL3plcm8gMzQgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMCAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1taW51cyAyNSAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA1MTYxODIxMzErMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDkyNjIgMDAwMDAgbiAKMDAwMDAwOTAzMiAwMDAwMCBuIAowMDAwMDA5MDc1IDAwMDAwIG4gCjAwMDAwMDkxNzQgMDAwMDAgbiAKMDAwMDAwOTE5NSAwMDAwMCBuIAowMDAwMDA5MjE2IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE5NzAgMDAwMDAgbiAKMDAwMDAwMjkzNyAwMDAwMCBuIAowMDAwMDAyNzI5IDAwMDAwIG4gCjAwMDAwMDI0MDYgMDAwMDAgbiAKMDAwMDAwMzk5MCAwMDAwMCBuIAowMDAwMDAxOTkxIDAwMDAwIG4gCjAwMDAwMDIyNDIgMDAwMDAgbiAKMDAwMDAwNzc5MiAwMDAwMCBuIAowMDAwMDA3NTkyIDAwMDAwIG4gCjAwMDAwMDcyMDIgMDAwMDAgbiAKMDAwMDAwODg0NSAwMDAwMCBuIAowMDAwMDA0MDMyIDAwMDAwIG4gCjAwMDAwMDQ0OTcgMDAwMDAgbiAKMDAwMDAwNDgxNyAwMDAwMCBuIAowMDAwMDA0OTc5IDAwMDAwIG4gCjAwMDAwMDUxNDkgMDAwMDAgbiAKMDAwMDAwNTMwMSAwMDAwMCBuIAowMDAwMDA1NTIxIDAwMDAwIG4gCjAwMDAwMDU3NDMgMDAwMDAgbiAKMDAwMDAwNTg2NCAwMDAwMCBuIAowMDAwMDA2MDA0IDAwMDAwIG4gCjAwMDAwMDYzOTQgMDAwMDAgbiAKMDAwMDAwNjU5OCAwMDAwMCBuIAowMDAwMDA2OTE5IDAwMDAwIG4gCjAwMDAwMDkzMjIgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzNSAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzYgPj4Kc3RhcnR4cmVmCjk0NzYKJSVFT0YK\n",
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"