{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Characterization of Systems in the Spectral Domain\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": [ "## The Transfer Function\n", "\n", "Different time-domain representations are used to characterize linear time-invariant (LTI) systems. For instance, the constant coefficients of ordinary partial differential equations (ODEs), the [impulse response](../systems_time_domain/impulse_response.ipynb) and the [step response](../systems_time_domain/step_response.ipynb). The [transfer function](../systems_time_domain/eigenfunctions.ipynb#Transfer-Function) denotes the complex factor $H(s)$ an eigenfunction $e^{s t}$ at the input of an LTI system is weighted with when passing through the system. Since the Laplace transform decomposes signals with respect to these eigenfunctions, the transfer function constitutes a representation of an LTI system in the spectral (Laplace or Fourier) domain. The links between the transfer function and the time-domain representations of LTI systems are discussed in this section." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Relation to Impulse Response and In-/Output Signal\n", "\n", "It was already outlined in the context of the [convolution theorem of the Fourier](../fourier_transform/theorems.ipynb#Convolution-Theorem) and [Laplace transform](../laplace_transform/theorems.ipynb#Convolution-Theorem), that an LTI system can be represented equivalently in the temporal and spectral domain. In the temporal domain the output $y(t)$ of an LTI system is given by convolving the input signal $x(t)$ with the [impulse response](../systems_time_domain/impulse_response.ipynb) $h(t)$ of the system\n", "\n", "\\begin{equation}\n", "y(t) = x(t) * h(t)\n", "\\end{equation}\n", "\n", "Applying the convolution theorem of the Laplace transform yields\n", "\n", "\\begin{equation}\n", "Y(s) = X(s) \\cdot H(s)\n", "\\end{equation}\n", "\n", "where $X(s) = \\mathcal{L} \\{ x(t) \\}$ and $Y(s) = \\mathcal{L} \\{ y(t) \\}$ are the Laplace transforms of the input and output signal, respectively. The transfer function $H(s)$ is given as the Laplace transform of the impulse response $h(t)$\n", "\n", "\\begin{equation}\n", "H(s) = \\mathcal{L} \\{ h(t) \\}\n", "\\end{equation}\n", "\n", "This may also be concluded from the [previously derived link between the impulse response and the transfer function](../systems_time_domain/eigenfunctions.ipynb#Link-between-Transfer-Function-and-Impulse-Response). The derived results show that an LTI system can be fully characterized either in the temporal or spectral domain by its impulse response $h(t)$ or transfer function $H(s)$ or $H(j \\omega)$, respectively.\n", "\n", "![LTI system in the temporal and spectral domain](LTI_system_time_spectral_domain.png)\n", "\n", "It can furthermore be concluded that the transfer function is given as the quotient between output $Y(s)$ and input signal $X(s)$ in the Laplace domain\n", "\n", "\\begin{equation}\n", "H(s) = \\frac{Y(s)}{X(s)}\n", "\\end{equation}\n", "\n", "for $X(s) \\neq 0$. The same relations hold in the Fourier domain if the region of convergence (ROC) of the impulse response includes the imaginary axis $\\Re \\{ s \\} = 0$. In general, the transfer function can be derived by divison of the spectra of the output and input signal. This can be used to measure the transfer function of a system by specific input signals that fulfill $X(s) \\neq 0$ with $X(s) \\approx$ constant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The [transfer function $H(s)$ of the 2nd order low-pass filter](../systems_time_domain/network_analysis.ipynb#Transfer-Function) was derived as\n", "\n", "\\begin{equation}\n", "H(s) = \\frac{1}{C L s^2 + C R s + 1}\n", "\\end{equation}\n", "\n", "According to above findings, the impulse response $h(t)$ of the low-pass is given by inverse Laplace transform of the transfer function $H(s)$. First the transfer function is defined in `SymPy`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{1}{C L s^{2} + C R s + 1}$" ], "text/plain": [ " 1 \n", "──────────────────\n", " 2 \n", "C⋅L⋅s + C⋅R⋅s + 1" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "%matplotlib inline\n", "sym.init_printing()\n", "\n", "R, L, C = sym.symbols('R L C', positive=True)\n", "s = sym.symbols('s', complex=True)\n", "\n", "H = 1/(C*L*s**2 + C*R*s + 1)\n", "H" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then the inverse Laplace transform is computed for the specific normalized values $L = .5$, $R = 1$, $C = .4$ of the network elements" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{5 e^{- t} \\sin{\\left(2 t \\right)} \\theta\\left(t\\right)}{2}$" ], "text/plain": [ " -t \n", "5⋅ℯ ⋅sin(2⋅t)⋅Heaviside(t)\n", "───────────────────────────\n", " 2 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = sym.symbols('t', real=True)\n", "RLC = {R: 1, L: sym.Rational('.5'), C: sym.Rational('.4')}\n", "\n", "h = sym.inverse_laplace_transform(H.subs(RLC), s, t)\n", "h" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This result is plotted for illustration" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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VHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0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L0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjE3IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIwIDAgb2JqCjw8IC9laWdodCAyMSAwIFIgL2ZvdXIgMjIgMCBSIC9oIDIzIDAgUiAvb25lIDI1IDAgUiAvcGFyZW5sZWZ0IDI2IDAgUgovcGFyZW5yaWdodCAyNyAwIFIgL3BlcmlvZCAyOCAwIFIgL3NpeCAyOSAwIFIgL3QgMzAgMCBSIC90d28gMzEgMCBSCi96ZXJvIDMyIDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMTkgMCBSIC9GMiAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0RlamFWdVNhbnMtbWludXMgMjQgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iagozMyAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMTkwNTI5MDkzNzA1KzAyJzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4wLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMC4zKSA+PgplbmRvYmoKeHJlZgowIDM0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDA5NzE2IDAwMDAwIG4gCjAwMDAwMDk0ODYgMDAwMDAgbiAKMDAwMDAwOTUyOSAwMDAwMCBuIAowMDAwMDA5NjI4IDAwMDAwIG4gCjAwMDAwMDk2NDkgMDAwMDAgbiAKMDAwMDAwOTY3MCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTggMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAyODQ2IDAwMDAwIG4gCjAwMDAwMDM2NDIgMDAwMDAgbiAKMDAwMDAwMzQzNCAwMDAwMCBuIAowMDAwMDAzMTE4IDAwMDAwIG4gCjAwMDAwMDQ2OTUgMDAwMDAgbiAKMDAwMDAwMjg2NyAwMDAwMCBuIAowMDAwMDA4MjYzIDAwMDAwIG4gCjAwMDAwMDgwNjMgMDAwMDAgbiAKMDAwMDAwNzY3MyAwMDAwMCBuIAowMDAwMDA5MzE2IDAwMDAwIG4gCjAwMDAwMDQ3MjcgMDAwMDAgbiAKMDAwMDAwNTE5MiAwMDAwMCBuIAowMDAwMDA1MzU0IDAwMDAwIG4gCjAwMDAwMDU1OTAgMDAwMDAgbiAKMDAwMDAwNTc2MCAwMDAwMCBuIAowMDAwMDA1OTEyIDAwMDAwIG4gCjAwMDAwMDYxMzIgMDAwMDAgbiAKMDAwMDAwNjM1NCAwMDAwMCBuIAowMDAwMDA2NDc1IDAwMDAwIG4gCjAwMDAwMDY4NjUgMDAwMDAgbiAKMDAwMDAwNzA2OSAwMDAwMCBuIAowMDAwMDA3MzkwIDAwMDAwIG4gCjAwMDAwMDk3NzYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzMyAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzQgPj4Kc3RhcnR4cmVmCjk5MzAKJSVFT0YK\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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" }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sym.plot(h, (t, 0, 10), xlabel='$t$', ylabel='h(t)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, the result is equal to the [impulse response derived by explicit solution of the underlying ODE](../systems_time_domain/network_analysis.ipynb#Impulse-Response)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Relation to Differential Equations\n", "\n", "Linear ODEs with constant coefficients describing the relation between input $x(t)$ and output $y(t)$ represent an LTI system. In this case a system is characterized by the constants $\\alpha_n$ and $\\beta_m$ of the ODE\n", "\n", "\\begin{equation}\n", "\\sum_{n=0}^{N} \\alpha_n \\frac{d^n}{d t^n} y(t) = \\sum_{m=0}^{M} \\beta_m \\frac{d^m}{d t^m} x(t)\n", "\\end{equation}\n", "\n", "where $\\alpha_N \\neq 0$ with $N$ denoting the degree of the ODE. Initial values are discarded in the following. Applying a two-sided Laplace transform to the left- and right-hand-side and using the [differentiation theorem](../laplace_transform/theorems.ipynb#Differentiation-Theorem) yields\n", "\n", "\\begin{equation}\n", "Y(s) \\sum_{n=0}^{N} \\alpha_n s^n = X(s) \\sum_{m=0}^{M} \\beta_m s^m\n", "\\end{equation}\n", "\n", "Rearranging this result derives the transfer function $H(s)$ of the system as\n", "\n", "\\begin{equation}\n", "H(s) = \\frac{Y(s)}{X(s)} = \\frac{\\sum_{m=0}^{M} \\beta_m s^m}{\\sum_{n=0}^{N} \\alpha_n s^n}\n", "\\end{equation}\n", "\n", "The transfer function of an LTI system whose in- and output relation can be characterized by an ODE is given as rational function in $s$. The coefficients of its numerator and denominator polynomial are given by the coefficients $\\beta_m$ and $\\alpha_n$ of the ODE. The conversion between both representations of an LTI system is therefore straightforward." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The coefficients for the 2nd order low-pass filter can be determined [from its ODE](../systems_time_domain/network_analysis.ipynb#Differential-Equation) or from above transfer function as\n", "\n", "\\begin{align}\n", "\\beta_0 &= 1 & \\alpha_0 &= 1 \\\\\n", "& & \\alpha_1 &= C R \\\\\n", "& & \\alpha_2 &= C L\n", "\\end{align}\n", "\n", "From theses coefficients the transfer function $H(s)$ is constructed in `SymPy`" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{1}{C L s^{2} + C R s + 1}$" ], "text/plain": [ " 1 \n", "──────────────────\n", " 2 \n", "C⋅L⋅s + C⋅R⋅s + 1" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R, L, C = sym.symbols('R L C', positive=True)\n", "beta = 1\n", "alpha = L*C, R*C, 1\n", "\n", "H = sym.Poly(beta, s) / sym.Poly(alpha, s)\n", "H" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Many software packages for signal processing feature functionality for the computation of the transfer function from the coefficients $\\beta_m$ and $\\alpha_n$ of a system. For instance, the Python signal processing toolbox [`scipy.signal`](http://docs.scipy.org/doc/scipy/reference/signal.html) provides a function to numerically evaluate the transfer function $H(j \\omega)$ at a number of angular frequencies $\\omega_i$ for a given set of coefficients. This is illustrated in the following for the normalized values $R$, $L$ and $C$ used above." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from scipy import signal\n", "\n", "R = 1\n", "L = 0.5\n", "C = 0.4\n", "beta = 1\n", "alpha = L*C, R*C, 1\n", "\n", "w, H = signal.freqresp((beta, alpha))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This results in the vector `w` of discrete angular frequencies $\\omega_i$ and the vector `H` with the values of $H(j \\omega)$ at these frequencies. The latter is plotted with the Python plotting library [`matplotlib`](http://matplotlib.org/)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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ZXMgWyA3MiAvSCAxMDYgL2ogMTE1IC9zIF0gL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAxNiAtMzUxIDE2NjAgMTA2OCBdIC9Gb250RGVzY3JpcHRvciAxMyAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2Fucy1PYmxpcXVlCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEyIDAgUiA+PgplbmRvYmoKMTMgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDk2Ci9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL0l0YWxpY0FuZ2xlIDAgL01heFdpZHRoIDEzNTAgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEyIDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNTAgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyOCA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTcgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxNyA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA4CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5OTUgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjE1IDAgb2JqCjw8IC9IIDE2IDAgUiAvaiAxNyAwIFIgL3MgMTkgMCBSID4+CmVuZG9iagoyNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDU0ID4+CnN0cmVhbQp4nDM2NlcwUDA0MlfQNTI2VTAyNFAwNzNRSDHkgjFzwSywbA4XXCGECZLPgavM4UoDAEyQDxUKZW5kc3RyZWFtCmVuZG9iagoyNSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM5MiA+PgpzdHJlYW0KeJw9UktuBTEI288puECl8E1ynqne7t1/W5vMVKoKLwO2MZSXDKklP+qSiDNMfvVyXeJR8r1samfmIe4u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MCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9iYXIgMjQgMCBSIC9laWdodCAyNSAwIFIgL2ZvdXIgMjYgMCBSIC9pIDI3IDAgUiAvbiAyOSAwIFIgL29uZSAzMCAwIFIKL3BhcmVubGVmdCAzMSAwIFIgL3BhcmVucmlnaHQgMzIgMCBSIC9wZXJpb2QgMzMgMCBSIC9zaXggMzQgMCBSCi9zcGFjZSAzNSAwIFIgL3R3byAzNiAwIFIgL3plcm8gMzcgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAyMiAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCAvRGVqYVZ1U2Fucy1PYmxpcXVlLW9tZWdhIDE4IDAgUiAvRGVqYVZ1U2Fucy1taW51cyAyOCAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjM4IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxOTA1MjkwOTM3MDYrMDInMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMywgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjMpID4+CmVuZG9iagp4cmVmCjAgMzkKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTAzNzUgMDAwMDAgbiAKMDAwMDAxMDExMiAwMDAwMCBuIAowMDAwMDEwMTU1IDAwMDAwIG4gCjAwMDAwMTAyNTQgMDAwMDAgbiAKMDAwMDAxMDI3NSAwMDAwMCBuIAowMDAwMDEwMjk2IDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDIzOTggMDAwMDAgbiAKMDAwMDAwNDA1NCAwMDAwMCBuIAowMDAwMDAzODQ2IDAwMDAwIG4gCjAwMDAwMDM1MTcgMDAwMDAgbiAKMDAwMDAwNTEwNyAwMDAwMCBuIAowMDAwMDAyNDE5IDAwMDAwIG4gCjAwMDAwMDI1NzkgMDAwMDAgbiAKMDAwMDAwMjgwNCAwMDAwMCBuIAowMDAwMDAzMTE5IDAwMDAwIG4gCjAwMDAwMDg4NjMgMDAwMDAgbiAKMDAwMDAwODY2MyAwMDAwMCBuIAowMDAwMDA4MjU0IDAwMDAwIG4gCjAwMDAwMDk5MTYgMDAwMDAgbiAKMDAwMDAwNTE1OSAwMDAwMCBuIAowMDAwMDA1Mjg1IDAwMDAwIG4gCjAwMDAwMDU3NTAgMDAwMDAgbiAKMDAwMDAwNTkxMiAwMDAwMCBuIAowMDAwMDA2MDUyIDAwMDAwIG4gCjAwMDAwMDYyMjIgMDAwMDAgbiAKMDAwMDAwNjQ1NiAwMDAwMCBuIAowMDAwMDA2NjA4IDAwMDAwIG4gCjAwMDAwMDY4MjggMDAwMDAgbiAKMDAwMDAwNzA1MCAwMDAwMCBuIAowMDAwMDA3MTcxIDAwMDAwIG4gCjAwMDAwMDc1NjEgMDAwMDAgbiAKMDAwMDAwNzY1MCAwMDAwMCBuIAowMDAwMDA3OTcxIDAwMDAwIG4gCjAwMDAwMTA0MzUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyAzOCAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgMzkgPj4Kc3RhcnR4cmVmCjEwNTg5CiUlRU9GCg==\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(w, abs(H))\n", "plt.xlabel('$\\omega$ in $s^{-1}$')\n", "plt.ylabel('$|H(j \\omega)|$')\n", "plt.grid();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Determination from Internal Structure\n", "\n", "The transfer function $H(s)$ can be determined from the internal structure of an LTI system, if known. Either by derivation of the ODE characterizing the system, as shown above, or by direct analysis of the system in the Laplace/Fourier domain. For passive electrical networks this can be conducted by representing the signals and elements of the network by their complex impedances $Z(s)$ and applying Kirchhoff's circuit laws. This was illustrated for instance by the previous [Laplace domain analysis of a 2nd order low-pass filter](../laplace_transform/network_analysis.ipynb#Example:-Second-Order-Low-Pass-Filter). Similar procedures can be applied to other types of LTI systems, e.g. mechanical systems.\n", "\n", "The transfer function is then given as the quotient between the output signal $Y(s)$ and the input signal $X(s)$ in the Laplace/Fourier domain." ] }, { "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.3" } }, "nbformat": 4, "nbformat_minor": 1 }