{ "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": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "\n", "def fourier_transform(x):\n", " return sym.integrals.transforms._fourier_transform(x, t, w, 1, -1, 'Fourier')\n", "\n", "\n", "def inverse_fourier_transform(X):\n", " return sym.integrals.transforms._fourier_transform(X, w, t, 1/(2*sym.pi), 1, 'Inverse Fourier')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\begin{cases} 1 & \\text{for}\\: \\frac{1}{4 \\left|{t^{2}}\\right|} > 1 \\\\0 & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "⎧ 1 \n", "⎪1 for ────── > 1\n", "⎪ │ 2│ \n", "⎨ 4⋅│t │ \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": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iago4IDAgb2JqCjw8IC9FeHRHU3RhdGUgNCAwIFIgL0ZvbnQgMyAwIFIgL1BhdHRlcm4gNSAwIFIKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL1NoYWRpbmcgNiAwIFIKL1hPYmplY3QgNyAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Bbm5vdHMgWyBdIC9Db250ZW50cyA5IDAgUgovR3JvdXAgPDwgL0NTIC9EZXZpY2VSR0IgL1MgL1RyYW5zcGFyZW5jeSAvVHlwZSAvR3JvdXAgPj4KL01lZGlhQm94IFsgMCAwIDQ1NS4xODU5Mzc1IDM0My42NTkyNSBdIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA4IDAgUgovVHlwZSAvUGFnZSA+PgplbmRvYmoKOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDExIDAgUiA+PgpzdHJlYW0KeJylWU1vHDcMvc+vmKNzsCxRnzw2SGOgNydGe+klcJw0RtZF6qTpz+/jzOzujMj1BogNB7t874kUR0NRShgfhjB+HP34gL/vYxiv8fdx8Pi2G1LOLrTMseLr5/XXmKIrmSnD7Dff/hqGD8PVLxjkCaLroToaKboaG2AMmYrz+HQwfT6YIlWXllFEtf6+jErzqB8RI+J1DRHDh1gGkENCEGGM1eUUq3hbGZPzk/HzMLzElL8PX/CvHy89xgrBNSpUW/KgEjnO491ueHk7Xr0G6sfbD0NzsTb2BeHg+/vhIjjvX4y3D8OvtxjLOy/D4Xf/AQNAffnq/uHd79/evnt8utx9evz2NL76e7jB7xT9UCvo0Ze2jnplfC7qElxhqjmXFtqPRu1dzT8ddaDiWuWc8jrstfX5bAeX8VwjTdwfDjz/fLpDLa6m4iluAl9Znw0cGU+Ua/BENf544PTzGSfktgTa5PtoU0FvIqKQXapcWt0new5rXr4jwlp8IA0Jsde6fYWO1jN+SnYxlVBSrVQ3ruYMHF1FhB4Tnv5mQmvr864ipkRYb4m8sNeucjeriPgpBI60cbWynnGFWfnKwg2NNq5qN6uE+P1URNau1tbnXaWQHGM+jIoF9tFVWD2rrSJhxJKm1cYOBUyWgyi+do/WXD7RhY3txGP1KNWThxjlNZFltCygE06YXC156+RgO+ekNYelenRCJ5yEVB23uvVyNJ5zE5C5wP7oJ53wIxLyvPVzNJ71w+xSoKOfcspPbi7F0Pk5GM/5oZxcienop51aAUH26n4JHIxn14Bn1/JhEYTjIkBtQ428lKIWuLpCbR65LZv4VCilsXDzeoX86jUtDi7+m0pkdhyWSuVnwj6Ciz8vJkZ0jL2x1LDiHAb5uqeQb9ymNa2GebGvxTfDl3HTnKTYXJumCAuF8Z/78Y/xccRmJW2GC6ijpaFLyDKFsvxU5Lf63BrFTDy+uR6vXt3/++nu/s31y/HuyW5L5EUKscWyeffeWnbUD7xoyVNrHdmwgyytFBGnnqztuyETHjqGoI5s2EFuMgI2v56s7buhJJeQf+KObNjR7ni8s77lPgzDPvVGOTQfFFnbd0OLLseSuHZkww4y4wUq2Ol6srbvBsamkKtPfTYMO/oLj9UTfEz90BYgdHkNSmr9HC0A9CA7EaGB7ekGIHSsSMo+9UmxAGnqIjYfSjX2dAMQOkIkbHkqdgOYW8aKCuT7xW0BC51r0rEo+9KOpqQfqAUsdGy7Pm2r4VsbEQHadI740QIDmQU5UjMcaEDoKEd1fto930AgiNIUocgHJbAQETD6jcrNEBgIBCkjX6isWmAhEGRsECX7yEpgISKQnYOzvJq9wEAgKPjcCkqwEliINPsoK1HSrQQWIoIsjqfa2QsMBIKGcaqvWWfJQkQgmwRRK1pgIBCgm2J59xTfAIReUQg4sh7fQnbTdu+p+KByZCIiwC7QvM/Kg4lAgM8t+GZ4sBBpVQIeTvF6YZiICFi2bB91SBYCAV4SrC4mtVZNBIKEZBfmrF5QExEBenQcHpNaSSYCQc6uIdmkBRYCgdwJFB9JT9pCRFCl54l6CgYgh0H0vQ3tuR7fQkTAcmRGbdYCA4GgJTmYRSNHFgIBy0k6sC6TJiKCgkMiXls9BwtBt+bxNGvzOkkmIgLGOGjb1Uoykd10nEXtNPgGIOdkNGgpoPlUfAsRAQ4HpTTWDixEBNklxm6t9jYTmQWcmKspUMh81g8FzYaq2yYyC6jW4lXFMJHlNgFNudePzUIWAecWc9cwWIA08TgG5IZ9VXXxGhC6HOXQGfatjgWAjpNsbTVy3+tYAOioB3J5SSp2AwBdqkFOuahgDEDoCBE+q5qqASyXK1xLVcEYAOiNcIRC/e4bNQsQenO5cVIHIgsAnaN0b1mPbgBCZ+xXuQWVdwOQw1l2IWK36ke3ANADwcpBZcYChM7SBcfU590Cdub900S/Gb+MNP423/JPt+bdIfVwCXG8qD9eGKyu4THW4Wp/unrX9/k78z5/eDzc3u9v7ec7/lX0e9km9M7d9v8FTvq6Gf4HX9HuowplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjE1NDkKZW5kb2JqCjE2IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTc4ID4+CnN0cmVhbQp4nD2QSxIDIQhE956ijyA/0fMkldXk/ts0zpiF9hMobLCl6BjOy9WQXfGWVhie+DbvC56Jq6n1hyQVMvumDhmLZ/IUJyQUryZjQNyx1dajcTLCDLssJmZgroqvRC6oUALqUfJqZqPgaqaCvn3EVpn1FhcIRQImLGcr/p8D0+sWHQwWmO03y7M89grTdCzMe4Z5D0UjfgblWm5gZa2Dn4Ydmve2aCj/5Cd7Fni1zw/eq0KhCmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA5MiA+PgpzdHJlYW0KeJw9jLENwDAIBHum+AUiYYxt2CdK5ezf5i0naeD0D9fSoDiscXZVNB84i3x4S/WEjcSUppVHU5zd2hYOK4MUu9gWFl5hEaTyapjxeVPVwJJSlOXN+n93PcerG7oKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQmFzZUZvbnQgL0RlamFWdVNhbnMtT2JsaXF1ZSAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTE2IC90IDEyMCAveCBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzUwIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4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NBLUZgtOlgGuTj+MDgBgIl5ZgOyuRDlL0o6ln2+8x/cPQABTtAplbmRzdHJlYW0KZW5kb2JqCjIwIDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2FucyAvQ2hhclByb2NzIDIxIDAgUgovRW5jb2RpbmcgPDwKL0RpZmZlcmVuY2VzIFsgNDAgL3BhcmVubGVmdCAvcGFyZW5yaWdodCA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byA1MiAvZm91ciAvZml2ZQovc2l4IC9zZXZlbiAvZWlnaHQgMTE2IC90IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAxOSAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxOCAwIFIgPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTggMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjEgMCBvYmoKPDwgL2VpZ2h0IDIyIDAgUiAvZml2ZSAyMyAwIFIgL2ZvdXIgMjQgMCBSIC9vbmUgMjYgMCBSIC9wYXJlbmxlZnQgMjcgMCBSCi9wYXJlbnJpZ2h0IDI4IDAgUiAvcGVyaW9kIDI5IDAgUiAvc2V2ZW4gMzAgMCBSIC9zaXggMzEgMCBSIC90IDMyIDAgUgovdHdvIDMzIDAgUiAvemVybyAzNCAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIwIDAgUiAvRjIgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDI1IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKMzUgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMDQzMDExMjI0MyswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjMuNCkgPj4KZW5kb2JqCnhyZWYKMCAzNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAwOTMxOCAwMDAwMCBuIAowMDAwMDA5MDg1IDAwMDAwIG4gCjAwMDAwMDkxMjggMDAwMDAgbiAKMDAwMDAwOTIyNyAwMDAwMCBuIAowMDAwMDA5MjQ4IDAwMDAwIG4gCjAwMDAwMDkyNjkgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk5IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMjAyMyAwMDAwMCBuIAowMDAwMDAyOTkwIDAwMDAwIG4gCjAwMDAwMDI3ODIgMDAwMDAgbiAKMDAwMDAwMjQ1OSAwMDAwMCBuIAowMDAwMDA0MDQzIDAwMDAwIG4gCjAwMDAwMDIwNDQgMDAwMDAgbiAKMDAwMDAwMjI5NSAwMDAwMCBuIAowMDAwMDA3ODQ1IDAwMDAwIG4gCjAwMDAwMDc2NDUgMDAwMDAgbiAKMDAwMDAwNzI1NSAwMDAwMCBuIAowMDAwMDA4ODk4IDAwMDAwIG4gCjAwMDAwMDQwODUgMDAwMDAgbiAKMDAwMDAwNDU1MCAwMDAwMCBuIAowMDAwMDA0ODcwIDAwMDAwIG4gCjAwMDAwMDUwMzIgMDAwMDAgbiAKMDAwMDAwNTIwMiAwMDAwMCBuIAowMDAwMDA1MzU0IDAwMDAwIG4gCjAwMDAwMDU1NzQgMDAwMDAgbiAKMDAwMDAwNTc5NiAwMDAwMCBuIAowMDAwMDA1OTE3IDAwMDAwIG4gCjAwMDAwMDYwNTcgMDAwMDAgbiAKMDAwMDAwNjQ0NyAwMDAwMCBuIAowMDAwMDA2NjUxIDAwMDAwIG4gCjAwMDAwMDY5NzIgMDAwMDAgbiAKMDAwMDAwOTM3OCAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM1IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNiA+PgpzdGFydHhyZWYKOTUzNQolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-30T11:22:43.521051\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sym.plot(x, (t, -1, 1), ylabel=r'$x(t)$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Duality\n", "\n", "Comparing the [definition of the Fourier transform](definition.ipynb) with its inverse\n", "\n", "\\begin{align}\n", "X(j \\omega) &= \\int_{-\\infty}^{\\infty} x(t) \\, e^{-j \\omega t} \\; dt \\\\\n", "x(t) &= \\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty} X(j \\omega) \\, e^{j \\omega t} \\; d\\omega\n", "\\end{align}\n", "\n", "reveals that both are very similar in their structure. They differ only with respect to the normalization factor $2 \\pi$ and the sign of the exponential function. The duality principle of the Fourier transform can be deduced from this observation. Let's assume that we know the Fourier transformation $x_2(j \\omega)$ of a signal $x_1(t)$ \n", "\n", "\\begin{equation}\n", "x_2(j \\omega) = \\mathcal{F} \\{ x_1(t) \\}\n", "\\end{equation}\n", "\n", "It follows that the Fourier transformation of the signal \n", "\n", "\\begin{equation}\n", "x_2(j t) = x_2(j \\omega) \\big\\vert_{\\omega=t}\n", "\\end{equation}\n", "\n", "is given as\n", "\n", "\\begin{equation}\n", "\\mathcal{F} \\{ x_2(j t) \\} = 2 \\pi \\cdot x_1(- \\omega)\n", "\\end{equation}\n", "\n", "The duality principle of the Fourier transformation allows to carry over results from the time-domain to the spectral-domain and vice-versa. It can be used to derive new transforms from known transforms. This is illustrated at an example. Note, that the Laplace transformation shows no duality. This is due to the mapping of a complex signal $x(t)$ with real valued independent variable $t \\in \\mathbb{R}$ to its complex transform $X(s) \\in \\mathbb{C}$ with complex valued independent variable $s \\in \\mathbb{C}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Transformation of the exponential signal\n", "\n", "The Fourier transform of a shifted Dirac impulse $\\delta(t - \\tau)$ is derived by introducing it into the definition of the Fourier transform and exploiting the sifting property of the Dirac delta function\n", "\n", "\\begin{equation}\n", "\\mathcal{F} \\{ \\delta(t - \\tau) \\} = \\int_{-\\infty}^{\\infty} \\delta(t - \\tau) \\, e^{-j \\omega t} \\; dt = e^{-j \\omega \\tau}\n", "\\end{equation}\n", "\n", "Using the duality principle, the Fourier transform of $e^{-j \\omega_0 t}$ can be derived from this result by \n", "\n", "1. substituting $\\omega$ with $t$ and $\\tau$ with $\\omega_0$ on the right-hand side to yield the time-domain signal $e^{-j \\omega_0 t}$\n", "2. substituting $t$ by $- \\omega$, $\\tau$ with $\\omega_0$ and multiplying the result by $2 \\pi$ on the left-hand side\n", "\n", "\\begin{equation}\n", "\\mathcal{F} \\{ e^{-j \\omega_0 t} \\} = 2 \\pi \\cdot \\delta(\\omega + \\omega_0)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linearity\n", "\n", "The Fourier transform is a linear operation. For two signals $x_1(t)$ and $x_2(t)$ with Fourier transforms $X_1(j \\omega) = \\mathcal{F} \\{ x_1(t) \\}$ and $X_2(j \\omega) = \\mathcal{F} \\{ x_2(t) \\}$ the following holds\n", "\n", "\\begin{equation}\n", "\\mathcal{F} \\{ A \\cdot x_1(t) + B \\cdot x_2(t) \\} = A \\cdot X_1(j \\omega) + B \\cdot X_2(j \\omega)\n", "\\end{equation}\n", "\n", "with $A, B \\in \\mathbb{C}$. The Fourier transform of a weighted superposition of signals is equal to the weighted superposition of the individual Fourier transforms. This property is useful to derive the Fourier transform of signals that can be expressed as superposition of other signals for which the Fourier transforms are known or can be calculated easier. Note, linearity holds also for the inverse Fourier transform." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Transformation of the cosine and sine signal\n", "\n", "The Fourier transform of $\\cos(\\omega_0 t)$ and $\\sin(\\omega_0 t)$ is derived by expressing both as harmonic exponential signals using [Euler's formula](https://en.wikipedia.org/wiki/Euler's_formula)\n", "\n", "\\begin{align}\n", "\\cos(\\omega_0 t) &= \\frac{1}{2} \\left( e^{j \\omega_0 t} + e^{-j \\omega_0 t} \\right) \\\\\n", "\\sin(\\omega_0 t) &= \\frac{1}{2j} \\left( e^{j \\omega_0 t} - e^{-j \\omega_0 t} \\right)\n", "\\end{align}\n", "\n", "together with the Fourier transform $\\mathcal{F} \\{ e^{-j \\omega_0 t} \\} = 2 \\pi \\cdot \\delta(\\omega - \\omega_0)$ from above yields\n", "\n", "\\begin{align}\n", "\\mathcal{F} \\{ \\cos(\\omega_0 t) \\} &= \\pi \\left( \\delta(\\omega + \\omega_0) + \\delta(\\omega - \\omega_0) \\right) \\\\\n", "\\mathcal{F} \\{ \\sin(\\omega_0 t) \\} &= j \\pi \\left( \\delta(\\omega + \\omega_0) - \\delta(\\omega - \\omega_0) \\right)\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Symmetries\n", "\n", "In order to investigate the symmetries of the Fourier transform $X(j \\omega) = \\mathcal{F} \\{ x(t) \\}$ of a signal $x(t)$ with specific properties, first the case of a real valued signal $x(t) \\in \\mathbb{R}$ is considered. The results are then generalized to complex signals $x(t) \\in \\mathbb{C}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Real valued signals\n", "\n", "Decomposing a real valued signal $x(t) \\in \\mathbb{R}$ into its even and odd part $x(t) = x_\\text{e}(t) + x_\\text{o}(t)$ and introducing these into the definition of the Fourier transform yields\n", "\n", "\\begin{align}\n", "X(j \\omega) &= \\int_{-\\infty}^{\\infty} \\left[ x_\\text{e}(t) + x_\\text{o}(t) \\right] e^{-j \\omega t} \\; dt \\\\\n", "&= \\int_{-\\infty}^{\\infty} \\left[ x_\\text{e}(t) + x_\\text{o}(t) \\right] \\cdot \\left[ \\cos(\\omega t) - j \\sin(\\omega t) \\right] \\; dt \\\\\n", "&= \\underbrace{\\int_{-\\infty}^{\\infty} x_\\text{e}(t) \\cos(\\omega t) \\; dt}_{X_\\text{e}(j \\omega)} + \n", "j \\underbrace{\\int_{-\\infty}^{\\infty} - x_\\text{o}(t) \\sin(\\omega t) \\; dt}_{X_\\text{o}(j \\omega)}\n", "\\end{align}\n", "\n", "For the last equality the fact was exploited that an integral with symmetric limits is zero for odd functions. Note that the multiplication of an odd function with an even/odd function results in an even/odd function. In order to conclude on the symmetry of $X(j \\omega)$ its behavior for a reverse of the sign of $\\omega$ has to be investigated. Due to the symmetry properties of $\\cos(\\omega t)$ and $\\sin(\\omega t)$, it follows that the Fourier transform of the\n", "\n", "* even part $x_\\text{e}(t)$ is real valued with even symmetry $X_\\text{e}(j \\omega) = X_\\text{e}(-j \\omega)$\n", "* odd part $x_\\text{o}(t)$ is imaginary valued with odd symmetry $X_\\text{o}(j \\omega) = - X_\\text{o}(-j \\omega)$\n", "\n", "Combining this, it can be concluded that the Fourier transform $X(j \\omega)$ of a real-valued signal $x(t) \\in \\mathbb{R}$ shows complex conjugate symmetry\n", "\n", "\\begin{equation}\n", "X(j \\omega) = X^*(- j \\omega)\n", "\\end{equation}\n", "\n", "It follows that the magnitude spectrum $|X(j \\omega)|$ of a real-valued signal shows even symmetry\n", "\n", "\\begin{equation}\n", "|X(j \\omega)| = |X(- j \\omega)|\n", "\\end{equation}\n", "\n", "and the phase $\\varphi(j \\omega) = \\arg \\{ X(j \\omega) \\}$ odd symmetry\n", "\n", "\\begin{equation}\n", "\\varphi(j \\omega) = - \\varphi(- j \\omega)\n", "\\end{equation}\n", "\n", "Due to these symmetries, both are often plotted only for positive frequencies $\\omega \\geq 0$. However, without the information that the signal is real-valued it is not possible to conclude on the magnitude spectrum and phase for the negative frequencies $\\omega < 0$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Complex Signals\n", "\n", "By following the same procedure as above for an imaginary signal, the symmetries of the Fourier transform of the even and odd part of an imaginary signal can be derived. The results can be combined, by decomposing a complex signal $x(t) \\in \\mathbb{C}$ and its Fourier transform into its even and odd part for both the real and imaginary part. This results in the following symmetry relations of the Fourier transform\n", "\n", "![Symmetries of the Fourier transform](symmetries.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The Fourier transform $X(j \\omega)$ of the signal $x(t) = \\text{sgn}(t) \\cdot \\text{rect}(t)$ is computed. The signal is real valued with odd symmetry due to the sign function. It follows from the symmetry relations of the Fourier transform, that $X(j \\omega)$ is imaginary with odd symmetry." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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IDAgUgovRW5jb2RpbmcgPDwgL0RpZmZlcmVuY2VzIFsgMTE2IC90IDEyMCAveCBdIC9UeXBlIC9FbmNvZGluZyA+PiAvRmlyc3RDaGFyIDAKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyA5NgovRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250TmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9JdGFsaWNBbmdsZSAwIC9NYXhXaWR0aCAxMzUwIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIg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NDAgL3BhcmVubGVmdCAvcGFyZW5yaWdodCA0NiAvcGVyaW9kIDQ4IC96ZXJvIC9vbmUgL3R3byA1MyAvZml2ZSA1NQovc2V2ZW4gXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDE5IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDE4IDAgUiA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxOCAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoyMSAwIG9iago8PCAvZml2ZSAyMiAwIFIgL29uZSAyNCAwIFIgL3BhcmVubGVmdCAyNSAwIFIgL3BhcmVucmlnaHQgMjYgMCBSCi9wZXJpb2QgMjcgMCBSIC9zZXZlbiAyOCAwIFIgL3R3byAyOSAwIFIgL3plcm8gMzAgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMCAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAyMyAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjMxIDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MzAxMTIyNDQrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjQsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjQpID4+CmVuZG9iagp4cmVmCjAgMzIKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDgyMTIgMDAwMDAgbiAKMDAwMDAwNzk3OSAwMDAwMCBuIAowMDAwMDA4MDIyIDAwMDAwIG4gCjAwMDAwMDgxMjEgMDAwMDAgbiAKMDAwMDAwODE0MiAwMDAwMCBuIAowMDAwMDA4MTYzIDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5MyAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIyMDkgMDAwMDAgbiAKMDAwMDAwMzE3NiAwMDAwMCBuIAowMDAwMDAyOTY4IDAwMDAwIG4gCjAwMDAwMDI2NDUgMDAwMDAgbiAKMDAwMDAwNDIyOSAwMDAwMCBuIAowMDAwMDAyMjMwIDAwMDAwIG4gCjAwMDAwMDI0ODEgMDAwMDAgbiAKMDAwMDAwNjc4OCAwMDAwMCBuIAowMDAwMDA2NTg4IDAwMDAwIG4gCjAwMDAwMDYyMjAgMDAwMDAgbiAKMDAwMDAwNzg0MSAwMDAwMCBuIAowMDAwMDA0MjcxIDAwMDAwIG4gCjAwMDAwMDQ1OTEgMDAwMDAgbiAKMDAwMDAwNDc2MSAwMDAwMCBuIAowMDAwMDA0OTEzIDAwMDAwIG4gCjAwMDAwMDUxMzMgMDAwMDAgbiAKMDAwMDAwNTM1NSAwMDAwMCBuIAowMDAwMDA1NDc2IDAwMDAwIG4gCjAwMDAwMDU2MTYgMDAwMDAgbiAKMDAwMDAwNTkzNyAwMDAwMCBuIAowMDAwMDA4MjcyIDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMzEgMCBSIC9Sb290IDEgMCBSIC9TaXplIDMyID4+CnN0YXJ0eHJlZgo4NDI5CiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-30T11:22:44.028405\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = - sym.Heaviside(t + 1/2) + 2 * sym.Heaviside(t) - sym.Heaviside(t - 1/2)\n", "sym.plot(x, (t, -2, 2), xlabel=r'$t$', ylabel=r'$x(t)$');" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{i \\left(2.0 \\cos{\\left(0.5 \\omega \\right)} - 2.0\\right)}{\\omega}$" ], "text/plain": [ "ⅈ⋅(2.0⋅cos(0.5⋅ω) - 2.0)\n", "────────────────────────\n", " ω " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = fourier_transform(x)\n", "X = X.rewrite(sym.cos).simplify()\n", "X" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/pdf": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iago4IDAgb2JqCjw8IC9FeHRHU3RhdGUgNCAwIFIgL0ZvbnQgMyAwIFIgL1BhdHRlcm4gNSAwIFIKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL1NoYWRpbmcgNiAwIFIKL1hPYmplY3QgNyAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Bbm5vdHMgWyBdIC9Db250ZW50cyA5IDAgUgovR3JvdXAgPDwgL0NTIC9EZXZpY2VSR0IgL1MgL1RyYW5zcGFyZW5jeSAvVHlwZSAvR3JvdXAgPj4KL01lZGlhQm94IFsgMCAwIDQ1Ny43MjUgMzYxLjAyNSBdIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA4IDAgUgovVHlwZSAvUGFnZSA+PgplbmRvYmoKOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDExIDAgUiA+PgpzdHJlYW0KeJy1mMtyXLcRhvfnKbCUF4RwR2MZlRJVvEnJYtleZKMolCKGI5ckK164/O7+GudgZg4JknbZEYviDH786Eajb4A314s374wz1/z+ZLx5we+7xfHtsKRcbQ2ZzzfHz7F46/h7w5zT5/8sy9vl6V+gfmb2i6XaYPSXNVLpc/TbzfFbjM5KZ+r46du2TljXeYcu6GUFzVhVR5ZQrU8lN298EVuqd4KU89FsfR+9WZZnbO6n5SP/O3PhjKI2t1Z9bk7n5mRdrYh3vjTz5rA8uzRP/wbgzOXbRWys0lzpFrj89/Ikuq/M5fXy10uWdNbpqvyMD9DhXjy/un797ZdXrz98vji8//Dls3n+w/KSn76NpUVbYg6h7tQ/H31IfYnWifSZOvd3qh/+uPq+OOtDlJJ2+u+GH7R/ajbX0kRK1Mm/cwf+j+8ghGKLZ8Wd+5wG72i/0yiEaFMM0ufulVf9unoG9TZZnKt33seyl3Y+/Ig8KbYmXwuTdfpdkf6WzJixsDQm7WTuhh+WGXO0IbrI5KDT78oMt2QmzOeqJNd2MnfDD8tMvtnqm4tM1ul3ZcajzDN3SsnbrEeRnE0up5xPftS9xNzxEpujHl73lXDuK//41837j1+uLn44XL17fY/PkL1yrWrEQ3cFvx+cenzLNnaRKdgqjjNg9uOu7mz583xdyLI15xTO9T4NPqw3SSdVKaXUgAv+BsXTnxikJPaGH3h/rvnZ6MOq+5Bwu5Jilurib9E9/L8SzFD9OHhPwLtoa9fIl2SlpuDyKb3Y2wlmyAqu2VhEUjsXdjb6mDTE4MW+kWyoROfGmEnLaIJD+N3WzkYflUbMhIIwjgnbnrnNTFpzVs9Q6k7aafRRaSTRVmrGG3KR8+ha04n6zIWesBfZHCe62juSNZNAr6Hk7ifkGf3LIidRT37uXlMwNokzFambQ5FixpTvtymSXZbc4mnKcZV/Pulzom2OdF/9bJnrPsV763OIabrKV/es8uSXo29P0uK6rfvT4t/ffnr93x+/fFqd/fYKnJWUo0aPLrbLsR/N6BY5zW71yCHrAp+uzHfmgyHHawNIh+E5vxJWEWX7V/GXik0l0Bc1880L8/T51f/ev7n65sUz8+bzeWvYgiXdSdVkEhOVoJYsnHplC6XknsBfzRGqmUenwsYYZs9By81KmCIQGlW+5cpwpW9rLdHxrIQZclhytoHtJ21TGxv0MghT5LDQfrfCMa/NZMuouu1hikDAv0PT5FKDDY2WomzzJ8BhqUnFRsqVr2Jzxv5tnT9FDot4Ldt4dw+l4EtIm0JTBIJgieB0Yw09iZ2ySZgivVNu9BQcTnDEW0sSNxtNEVpT11vTIM0EwibWJOJXxhxSSrGJ1qKQOnywDsu4PCgzCIqnZ8olikqvLJXdWldf3QMppVnBJj73HSLbxaHYFIKCL+cce0MluATS42bfOQRFvTmk6tXX+OhbWWvPq3sgKPgzzlzUPfE2RxOYBmUKKYWCzKVEW/rqbFMTDcWmEJRcLJqu6jb80w8TTwC9YRAotMEhYkVMUmjBN0+ZQ1AQF1rPf1xNbK3F5XEmU0gpHK+QIkhoRSOitHEkMwSCBJsaZxt7QdIPMmw1hZQi+I2eD1WGyhK5CJVBmUFQaGiEqldM5ALrMWkd1p0hh177sLM47tYU9uTC8MYpAkErCuHM0QSN7dbyto0pogQKJGwNtxgJNyeuDcYM0tJNQ0PuIizVNv1kt23MISjRUzAbf2jl8LdE8dzcZA4pBRfwXD2akaSZn1AYjAkCIUUrtCGcJ7eOqK3illGmiBLoqlrDEobtuRCOcTtFIOhthjxMQOr1MZfaxiZmiBKaLdgc/QKJnDwY6iBMEAj0ipVLeEv4mrYwadSmKaLvJQRA7+hNollGhaNdZ4gSskZl5CRZMVbanCNhgkCgFJJRq1qbCuyq92MPM+TQr7q5CQdk8GNKcCnj4GaIXqPVApk6anxUV85BxslNIaWQgLnKNFbKAXMUGQVqDtEnOHyFyHXb0xJJIG/HPYeUQvrmCpu3Rx50r2FQZhAUj5aZ5pumg/xCwggjnOYQlNUBimbKTEltOR8Vm0JKoZ/RKlH7Q0ylxAzCXYDpkQqHI1S9YJP4yazHHmkKKUXLUIrUR88UCSkNX59D2ohhRSG3EMdaXEsbuWqK6FMGDZ/HkigbMDt789u5zyGl0N+k6FvPFSSN7IepZggEXNm73FR2JBPTMx5tNYWUQnylglNgEtIZ97Y6tj6FoBA6LTv22V88qt6dhoGnEBTRFw8Ssr6peO2WRbbqMYeUos0dHQjD+Dg1YpTaKQJBWymaR9ke+UodbeIUUULTljn2toCQbvoeMhgziOaY2MlCMtKVSLOlSdiEzCGlkOaLsENMQhhFCcPAc0h79mQTNgyhWzEloU0fTfsM0kcrmkKK+xYKjhQbh5QptH/n4ngrFUC24H1pPppgvl7f1/s79q3Lybjkro/lx6+nF3EWOb6r91fw3Yv6YfKivnw4vqCPl/P+yr57mttYu+eIO5LO3+bvkfRy+RUUxOWvCmVuZHN0cmVhbQplbmRvYmoKMTEgMCBvYmoKMTkwNQplbmRvYmoKMTYgMCBvYmoKPDwgL0JCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzMyCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE2SS25rMQxD53cV2kAB62+vp0BHefufviPfDgokoGJLJEXnSZMI+feoLVFL+TyaJeotelyUO3O9+P1YnPdk0+tL3EJ0zY33ki7xc6RcQtfA9xPx/t4pfFI3EofzDChLJROJfS6azsStMiTDxDCQZuJIwXXg74ZsBPaLOeK32iXTkfDPTG7lpqyk8PB5amEJq7lbsuxF+lDcw9kyHRH02+yxZzpcvDghI9dz0fLeTGXMcKoNGz7OtYJlWMNcvtjHIy8SEN1T2WlZsKTYTVQJgTBxS07K9+amblMcMpuV5KavrdKavJWtknbIoqV/gxpExt/KG/QgqGRmLAeSvaCCtIaYFx4kgH6roq+JqPJIX3cTVPFUnyd1glGJnj5Y/FxEEe2pHJvFf8gVNq/ZbdsbGQxVLDkaNU+p+VaKu2L9nrXtz4qf5+c/tip78QplbmRzdHJlYW0KZW5kb2JqCjE3IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggOTMgPj4Kc3RyZWFtCnicPY07DsAwCEN3TsEFKoVPArlP1Sm9/1qXfhb0ZGN7ZOfGmytuNOPQybuQWBSepC8tsqHsY4B65qt9kUUOspRyHWVQqho5S7YW97eW8Kwt0gljKkj+keMC4l0b9wplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTUyID4+CnN0cmVhbQp4nD1PyxFDIQi8W8U2wIwggtbzMjmZ/q8BTTyxsrgf8YEKYhaQVIe4w63ixYW1o6vjU6QdtAqLg+YGlr8SsYK8gevW6Rg9Zpt4iufGGDpjhrBwzJEMWdrFM+62L0WODYK7YVah6SmWPuR6YRsHUnqztF2hpnAupiJjhnHbaZ9bJdKO0y9K/ZquIr3D1JK1i8affX8BvPc2ZwplbmRzdHJlYW0KZW5kb2JqCjE5IDAgb2JqCjw8IC9CQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE4MQovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJw1UDkOBCEM63mFP7ASucN7Rtpq9v/thjBToBgcBzuDSfEhwW9ENpCJFHiCw3GNZIgxiA2qAloO0yiClzS6B79cavUSKGaJpXpISyl1XOEMltjlGjL7LqYgXZAMSA25hpZ0o3uoHE5twglGeaS25gausyaXzza6//J2SvCIduOFj9PQfJxGZdxcpHWqCHpiRs3KPTZ6CUbctRyxnLXUUqRUizpRZbDVD3M2/+7xGt8/5jc/HgplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2Fucy1PYmxpcXVlIC9DaGFyUHJvY3MgMTUgMCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyA4OCAvWCAxMDYgL2ogXSAvVHlwZSAvRW5jb2RpbmcgPj4gL0ZpcnN0Q2hhciAwCi9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2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MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9icmFjZWxlZnQgMjQgMCBSIC9icmFjZXJpZ2h0IDI1IDAgUiAvZm91ciAyNiAwIFIgL29uZSAyOCAwIFIKL3BhcmVubGVmdCAyOSAwIFIgL3BhcmVucmlnaHQgMzAgMCBSIC9wZXJpb2QgMzEgMCBSIC9zaXggMzIgMCBSCi90aHJlZSAzMyAwIFIgL3R3byAzNCAwIFIgL3plcm8gMzUgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMiAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRjEtRGVqYVZ1U2Fucy1taW51cyAyNyAwIFIgL0YyLURlamFWdVNhbnMtT2JsaXF1ZS1JZnJha3R1ciAxNiAwIFIKL0YyLURlamFWdVNhbnMtT2JsaXF1ZS1vbWVnYSAxOSAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM2IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MzAxMTIyNDYrMDInMDAnKQovQ3JlYXRvciAoTWF0cGxvdGxpYiB2My4zLjQsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAoTWF0cGxvdGxpYiBwZGYgYmFja2VuZCB2My4zLjQpID4+CmVuZG9iagp4cmVmCjAgMzcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTA0OTIgMDAwMDAgbiAKMDAwMDAxMDE4NCAwMDAwMCBuIAowMDAwMDEwMjI3IDAwMDAwIG4gCjAwMDAwMTAzMjYgMDAwMDAgbiAKMDAwMDAxMDM0NyAwMDAwMCBuIAowMDAwMDEwMzY4IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5MyAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIzNzMgMDAwMDAgbiAKMDAwMDAwNDA5NSAwMDAwMCBuIAowMDAwMDAzODg3IDAwMDAwIG4gCjAwMDAwMDM1NjUgMDAwMDAgbiAKMDAwMDAwNTE0OCAwMDAwMCBuIAowMDAwMDAyMzk0IDAwMDAwIG4gCjAwMDAwMDI4NjAgMDAwMDAgbiAKMDAwMDAwMzAyNSAwMDAwMCBuIAowMDAwMDAzMjUwIDAwMDAwIG4gCjAwMDAwMDg5NDQgMDAwMDAgbiAKMDAwMDAwODc0NCAwMDAwMCBuIAowMDAwMDA4MzQzIDAwMDAwIG4gCjAwMDAwMDk5OTcgMDAwMDAgbiAKMDAwMDAwNTE5MCAwMDAwMCBuIAowMDAwMDA1NTQyIDAwMDAwIG4gCjAwMDAwMDU4OTEgMDAwMDAgbiAKMDAwMDAwNjA1MyAwMDAwMCBuIAowMDAwMDA2MjIzIDAwMDAwIG4gCjAwMDAwMDYzNzUgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2ODE3IDAwMDAwIG4gCjAwMDAwMDY5MzggMDAwMDAgbiAKMDAwMDAwNzMyOCAwMDAwMCBuIAowMDAwMDA3NzM5IDAwMDAwIG4gCjAwMDAwMDgwNjAgMDAwMDAgbiAKMDAwMDAxMDU1MiAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDM2IDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSAzNyA+PgpzdGFydHhyZWYKMTA3MDkKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-04-30T11:22:46.460088\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sym.plot(sym.im(X), (w, -30, 30), xlabel=r'$\\omega$',\n", " ylabel=r'$\\Im \\{ X(j \\omega) \\}$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* What symmetry do you expect for the Fourier transform of the signal $x(t) = j \\cdot \\text{sgn}(t) \\cdot \\text{rect}(t)$? Check your results by modifying above example." ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Continuous- and Discrete-Time Signals and Systems - Theory and Computational Examples*." ] } ], "metadata": { "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.7.10" } }, "nbformat": 4, "nbformat_minor": 1 }