{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# The $z$-Transform\n", "\n", "*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Comunications 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": [ "## Theorems\n", "\n", "The theorems of the $z$-transform relate basic operations applied to discrete signals to their equivalents in the spectral domain. They are of use for the computation of $z$-transforms of signals composed from modified [standard signals](../continuous_signals/standard_signals.ipynb) and for the computation of the response of systems to an input signal. The theorems allow further to predict the consequences of modifying a signal or system by certain operations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Convolution Theorem\n", "\n", "The convolution theorem states that the $z$-transform of the linear convolution of two discrete signals $x[k]$ and $y[k]$ is equal to the scalar multiplication of their $z$-transforms $X(z)$ and $Y(z)$\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ x[k] * y[k] \\} = X(z) \\cdot Y(z)\n", "\\end{equation}\n", "\n", "under the assumption that both transforms $X(z) = \\mathcal{Z} \\{ x[k] \\}$ and $Y(z) = \\mathcal{Z} \\{ y[k] \\}$ exist, respectively. The ROC of the linear convolution $x(t) * y(t)$ includes at least the intersection of the ROCs of $x[k]$ and $y[k]$\n", "\n", "\\begin{equation}\n", "\\text{ROC} \\{ x[k] * y[k] \\} \\supseteq \\text{ROC} \\{ x[k] \\} \\cap \\text{ROC} \\{ y[k] \\}\n", "\\end{equation}\n", "\n", "\n", "The theorem can be proven by introducing the [definition of the linear convolution](../discrete_systems/linear_convolution.ipynb) into the [definition of the $z$-transform](definition.ipynb) and changing the order of summation\n", "\n", "\\begin{align}\n", "\\mathcal{Z} \\{ x[k] * y[k] \\} &= \\sum_{k = -\\infty}^{\\infty} \\left( \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\cdot y[k - \\kappa] \\right) z^{-k} \\\\\n", "&= \\sum_{\\kappa = -\\infty}^{\\infty} \\left( \\sum_{k = -\\infty}^{\\infty} y[k - \\kappa] \\, z^{-k} \\right) x[\\kappa] \\\\\n", "&= Y(z) \\cdot \\sum_{\\kappa = -\\infty}^{\\infty} x[\\kappa] \\, z^{-\\kappa} \\\\\n", "&= Y(z) \\cdot X(z)\n", "\\end{align}\n", "\n", "The convolution theorem is very useful in the context of linear time-invariant (LTI) systems. The output signal $y[k]$ of an LTI system is given as the convolution of the input signal $x[k]$ with its impulse response $h[k]$. The signals and their relation can be represented alternatively in the spectral domain using the convolution theorem. This leads to the following two equivalent representations of an LTI system\n", "\n", "![Representation of an LTI system in the time- and Laplace-domain](LTI_system_spectral_domain.png)\n", "\n", "Calculation of the system response by transforming the problem into the spectral domain can be beneficial since this replaces the evaluation of the linear convolution by a scalar multiplication. In many cases this procedure simplifies the calculation of the system response significantly. The convolution theorem can also be useful to derive a $z$-transform. The key is here to express the signal as convolution of two other signals for which the $z$-transforms are known. This is illustrated by the following example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The [linear convolution of two rectangular signals](../discrete_systems/linear_convolution.ipynb#Finite-Length-Signals) $\\text{rect}_N[k] * \\text{rect}_M[k]$ results in a finite-length signal of trapezoidal shape. The $z$-transform of this signal is derived by application of the convolution theorem together with the [transform of the rectangular signal](definition.ipynb#Transformation-of-the-Rectangular-Signal). This results in\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ \\text{rect}_N[k] * \\text{rect}_M[k] \\} \n", "= \\sum_{k=0}^{N-1} z^{-k} \\cdot \\sum_{k=0}^{M-1} z^{-k}\n", "= \\begin{cases}\n", "\\frac{1 - z^{-N}}{1 - z^{-1}} \\cdot \\frac{1 - z^{-M}}{1 - z^{-1}} & \\text{for } z \\neq 1 \\\\\n", "N \\cdot M & \\text{for } z = 1\n", "\\end{cases}\n", "\\end{equation}\n", "\n", "The ROC of the rectangular signal is $z \\in \\mathbb{C} \\setminus \\{ 0 \\}$. The ROC of the convolution of two rectangular signals is also $z \\in \\mathbb{C} \\setminus \\{ 0 \\}$, since in general no poles and zeros cancel out. The poles and zeros of $\\mathcal{Z} \\{ \\text{rect}_N[k] * \\text{rect}_M[k] \\}$ are computed and illustrated in the following." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4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dERlc2NyaXB0b3IgMTggMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL0RlamFWdVNhbnMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTcgMCBSID4+CmVuZG9iagoxOCAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTEwMjEgLTQ2MyAxNzk0IDEyMzMgXSAvRm9udE5hbWUgL0RlamFWdVNhbnMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEzNDIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjE3IDAgb2JqClsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAzMTggNDAxIDQ2MCA4MzggNjM2Cjk1MCA3ODAgMjc1IDM5MCAzOTAgNTAwIDgzOCAzMTggMzYxIDMxOCAzMzcgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNgo2MzYgNjM2IDMzNyAzMzcgODM4IDgzOCA4MzggNTMxIDEwMDAgNjg0IDY4NiA2OTggNzcwIDYzMiA1NzUgNzc1IDc1MiAyOTUKMjk1IDY1NiA1NTcgODYzIDc0OCA3ODcgNjAzIDc4NyA2OTUgNjM1IDYxMSA3MzIgNjg0IDk4OSA2ODUgNjExIDY4NSAzOTAgMzM3CjM5MCA4MzggNTAwIDUwMCA2MTMgNjM1IDU1MCA2MzUgNjE1IDM1MiA2MzUgNjM0IDI3OCAyNzggNTc5IDI3OCA5NzQgNjM0IDYxMgo2MzUgNjM1IDQxMSA1MjEgMzkyIDYzNCA1OTIgODE4IDU5MiA1OTIgNTI1IDYzNiAzMzcgNjM2IDgzOCA2MDAgNjM2IDYwMCAzMTgKMzUyIDUxOCAxMDAwIDUwMCA1MDAgNTAwIDEzNDIgNjM1IDQwMCAxMDcwIDYwMCA2ODUgNjAwIDYwMCAzMTggMzE4IDUxOCA1MTgKNTkwIDUwMCAxMDAwIDUwMCAxMDAwIDUyMSA0MDAgMTAyMyA2MDAgNTI1IDYxMSAzMTggNDAxIDYzNiA2MzYgNjM2IDYzNiAzMzcKNTAwIDUwMCAxMDAwIDQ3MSA2MTIgODM4IDM2MSAxMDAwIDUwMCA1MDAgODM4IDQwMSA0MDEgNTAwIDYzNiA2MzYgMzE4IDUwMAo0MDEgNDcxIDYxMiA5NjkgOTY5IDk2OSA1MzEgNjg0IDY4NCA2ODQgNjg0IDY4NCA2ODQgOTc0IDY5OCA2MzIgNjMyIDYzMiA2MzIKMjk1IDI5NSAyOTUgMjk1IDc3NSA3NDggNzg3IDc4NyA3ODcgNzg3IDc4NyA4MzggNzg3IDczMiA3MzIgNzMyIDczMiA2MTEgNjA1CjYzMCA2MTMgNjEzIDYxMyA2MTMgNjEzIDYxMyA5ODIgNTUwIDYxNSA2MTUgNjE1IDYxNSAyNzggMjc4IDI3OCAyNzggNjEyIDYzNAo2MTIgNjEyIDYxMiA2MTIgNjEyIDgzOCA2MTIgNjM0IDYzNCA2MzQgNjM0IDU5MiA2MzUgNTkyIF0KZW5kb2JqCjIwIDAgb2JqCjw8IC9JIDIxIDAgUiAvUCAyMiAwIFIgL1IgMjMgMCBSIC9aIDI0IDAgUiAvYSAyNSAwIFIgL2JyYWNlbGVmdCAyNiAwIFIKL2JyYWNlcmlnaHQgMjcgMCBSIC9kIDI4IDAgUiAvZSAyOSAwIFIgL2ZpdmUgMzAgMCBSIC9sIDMxIDAgUiAvbSAzMiAwIFIKL24gMzQgMCBSIC9vIDM1IDAgUiAvb25lIDM2IDAgUiAvcGVyaW9kIDM3IDAgUiAvciAzOCAwIFIgL3MgMzkgMCBSCi9zcGFjZSA0MCAwIFIgL3R3byA0MSAwIFIgL3plcm8gNDIgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxOSAwIFIgL0YyIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDAuNyAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjcgPj4KL0EzIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0E0IDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDAgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0RlamFWdVNhbnMtbWludXMgMzMgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago0MyAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMTkwNjI2MTQzOTU1KzAyJzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4wLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMC4zKSA+PgplbmRvYmoKeHJlZgowIDQ0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDEyNzczIDAwMDAwIG4gCjAwMDAwMTI0NjEgMDAwMDAgbiAKMDAwMDAxMjUwNCAwMDAwMCBuIAowMDAwMDEyNjg1IDAwMDAwIG4gCjAwMDAwMTI3MDYgMDAwMDAgbiAKMDAwMDAxMjcyNyAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTkgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAzMTU3IDAwMDAwIG4gCjAwMDAwMDM4NTUgMDAwMDAgbiAKMDAwMDAwMzY0NyAwMDAwMCBuIAowMDAwMDAzMzMxIDAwMDAwIG4gCjAwMDAwMDQ5MDggMDAwMDAgbiAKMDAwMDAwMzE3OCAwMDAwMCBuIAowMDAwMDExMTQwIDAwMDAwIG4gCjAwMDAwMTA5NDAgMDAwMDAgbiAKMDAwMDAxMDUwMSAwMDAwMCBuIAowMDAwMDEyMTkzIDAwMDAwIG4gCjAwMDAwMDQ5NDAgMDAwMDAgbiAKMDAwMDAwNTA2MSAwMDAwMCBuIAowMDAwMDA1Mjk5IDAwMDAwIG4gCjAwMDAwMDU1OTkgMDAwMDAgbiAKMDAwMDAwNTc0OCAwMDAwMCBuIAowMDAwMDA2MTI1IDAwMDAwIG4gCjAwMDAwMDY0NzcgMDAwMDAgbiAKMDAwMDAwNjgyNiAwMDAwMCBuIAowMDAwMDA3MTI2IDAwMDAwIG4gCjAwMDAwMDc0NDQgMDAwMDAgbiAKMDAwMDAwNzc2NCAwMDAwMCBuIAowMDAwMDA3ODgxIDAwMDAwIG4gCjAwMDAwMDgyMDkgMDAwMDAgbiAKMDAwMDAwODM3OSAwMDAwMCBuIAowMDAwMDA4NjEzIDAwMDAwIG4gCjAwMDAwMDg5MDAgMDAwMDAgbiAKMDAwMDAwOTA1MiAwMDAwMCBuIAowMDAwMDA5MTczIDAwMDAwIG4gCjAwMDAwMDk0MDMgMDAwMDAgbiAKMDAwMDAwOTgwOCAwMDAwMCBuIAowMDAwMDA5ODk3IDAwMDAwIG4gCjAwMDAwMTAyMTggMDAwMDAgbiAKMDAwMDAxMjgzMyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9JbmZvIDQzIDAgUiAvUm9vdCAxIDAgUiAvU2l6ZSA0NCA+PgpzdGFydHhyZWYKMTI5ODcKJSVFT0YK\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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 sympy as sym\n", "from pole_zero_plot import pole_zero_plot\n", "%matplotlib inline\n", "sym.init_printing()\n", "\n", "N = 5\n", "M = 7\n", "\n", "z = sym.symbols('z', complex=True)\n", "k = sym.symbols('k', integer=True)\n", "\n", "X = sym.summation(z**(-k), (k,0,N-1)) * sym.summation(z**(-k), (k,0,M-1))\n", "\n", "poles = sym.roots(sym.denom(X) * z, z)\n", "zeros = sym.roots(sym.numer(X) * z**(N+M-2), z)\n", "\n", "pole_zero_plot(poles, zeros)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Determine the locations of the zeros of the $z$-transform $\\mathcal{Z} \\{ \\text{rect}_N[k] \\}$ of a rectangular signal.\n", "* How are the locations of the zeros from above example related to these?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Shift Theorem\n", "\n", "The [shift of a signal](../discrete_signals/operations.ipynb#Shift) $x(k - \\kappa)$ for $\\kappa \\in \\mathbb{Z}$ can be expressed by the convolution of the signal $x[k]$ with a shifted Dirac impulse\n", "\n", "\\begin{equation}\n", "x[k - \\kappa] = x[k] * \\delta[k - \\kappa]\n", "\\end{equation}\n", "\n", "This follows from the sifting property of the Dirac impulse. Applying a two-sided $z$-transform to the left- and right-hand side and exploiting the convolution theorem yields\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ x[k - \\kappa] \\} = X(z) \\cdot z^{- \\kappa}\n", "\\end{equation}\n", "\n", "where $X(z) = \\mathcal{Z} \\{ x[k] \\}$ is assumed to exist. Note that $\\mathcal{Z} \\{ \\delta[k - \\kappa] \\} = z^{- \\kappa}$ can be derived from the definition of the two-sided $z$-transform together with the sifting property of the Dirac impulse. The $z$-transform of a shifted signal is given by multiplying the $z$-transform of the original signal with $z^{-\\kappa}$. The ROC of $x[k-\\kappa]$ is given as the ROC of $x[k]$, whereby the points $0$ and $\\infty$ have to be regarded separately due to the term $z^{- \\kappa}$ in its $z$-transform\n", "\n", "\\begin{equation}\n", "\\text{ROC} \\{ x[k - \\kappa] \\} \\supseteq \\text{ROC} \\{ x[k] \\} \\setminus \\{0, \\infty \\}\n", "\\end{equation}\n", "\n", "This result is known as shift theorem of the $z$-transform. For a causal signal $x[k]$ and $\\kappa > 0$ the shift theorem of the one-sided $z$-transform is equal to the shift theorem of the two-sided transform." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "Let's consider a system which delays a signal by a given number of samples. Its output signal $y[k] = \\mathcal{H} \\{ x[k] \\}$ reads\n", "\n", "\\begin{equation}\n", "y[k] = x[k-\\kappa]\n", "\\end{equation}\n", "\n", "where $\\kappa \\in \\mathbb{N}$. Applying the two-sided $z$-transform to the left- and right-hand side yields\n", "\n", "\\begin{equation}\n", "Y(z) = z^{-\\kappa} \\cdot X(z)\n", "\\end{equation}\n", "\n", "where $Y(z) = \\mathcal{Z} \\{ y[k] \\}$ and $X(z) = \\mathcal{Z} \\{ y[k] \\}$. The transfer function $H(z)$ of the system can be deduced from the spectral representation of the system output $Y(z) = H(z) \\cdot X(z)$ as\n", "\n", "\\begin{equation}\n", "H(z) = z^{- \\kappa}\n", "\\end{equation}\n", "\n", "Delaying a signal is a frequently applied operation in discrete signal processing. Block diagrams illustrating signal processing algorithms frequently contain blocks that constitute delays. These blocks are commonly annotated by the corresponding transfer function $z^{- \\kappa}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Draw a block diagramm illustrating the following difference equation $y[k] = x[k] + 2 x[k-1] + x[k-3]$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Modulation Theorem\n", "\n", "The complex modulation of a signal $x[k]$ is defined as $z_0^{k} \\cdot x[k]$ with $z_0 \\in \\mathbb{C} \\setminus \\{ 0 \\}$. The $z$-transform of a modulated signal is derived by introducing it into the definition of the two-sided $z$-transform\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\left\\{ z_0^k \\cdot x[k] \\right\\} =\n", "\\sum_{k = -\\infty}^{\\infty} x[k] z_0^k \\, z^{-k} =\n", "\\sum_{k = -\\infty}^{\\infty} x[k] \\, \\left( \\frac{z}{z_0} \\right)^{-k}\n", "= X \\left( \\frac{z}{z_0} \\right)\n", "\\end{equation}\n", "\n", "where $X(z) = \\mathcal{Z} \\{ x[k] \\}$. Modulation of the signal $x[k]$ leads to a complex scaling of the $z$-plane by the factor $z_0$. The complex scaling of $z$ can be expressed as\n", "\n", "\\begin{equation}\n", "\\frac{z}{z_0} = \\frac{|z|}{|z_0|} \\; e^{j (\\arg(z) - \\arg(z_0))}\n", "\\end{equation}\n", "\n", "where $\\arg(z)$ and $\\arg(z_0)$ denote the argument (phase) of $z$ and $z_0$, respectively. It follows from this representation that the complex scaling by $z_0$ can be interpreted as a scaling and rotation of the $z$-plane.\n", "\n", "The ROC is also complex scaled \n", "\n", "\\begin{equation}\n", "\\text{ROC} \\{ z_0^k \\cdot x[k] \\} = \\{z: \\frac{z}{z_0} \\in \\text{ROC} \\{ x[k] \\} \\}\n", "\\end{equation}\n", "\n", "This relation is known as modulation theorem." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The $z$-transform of an harmonic exponential signal $e^{j \\Omega_0 k}$ of finite duration $N$ is derived the following. The signal can be expressed as $e^{j \\Omega_0 k} \\cdot \\text{rect}_N[k]$ which allows to apply the modulation theorem with $z_0 = e^{j \\Omega_0}$. Together with the [z-Transform of the rectangular signal](definition.ipynb#Transformation-of-the-Rectangular-Signal) this yields\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ e^{j \\Omega_0 k} \\cdot \\text{rect}_N[k] \\} = \\begin{cases}\n", "\\frac{1 - \\left( \\frac{z}{e^{j \\Omega_0}} \\right)^{-N}}{1 - \\left( \\frac{z}{e^{j \\Omega_0}} \\right)^{-1}} & \\text{for } z \\neq e^{j \\Omega_0} \\\\\n", "N & \\text{for } z = e^{j \\Omega_0}\n", "\\end{cases}\n", "\\end{equation}\n", "\n", "for $z \\in \\mathbb{C} \\setminus \\{ 0 \\}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reversal\n", "\n", "The two-sided $z$-transform of the reversed signal $x[-k]$ of $x[k]$ is given as\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ x[-k] \\} = \\sum_{k=-\\infty}^{\\infty} x[-k] \\, z^{-k} = \\sum_{k=-\\infty}^{\\infty} x[k] \\, z^k =\n", "\\sum_{k=-\\infty}^{\\infty} x[k] \\, \\left( \\frac{1}{z} \\right)^{-k} = X \\left( \\frac{1}{z} \\right)\n", "\\end{equation}\n", "\n", "where $X(z) = \\mathcal{Z} \\{ x[k] \\}$ denotes the $z$-transform of $x[k]$. The revesal of a discrete signal leads to an inversion of the complex frequency $z$ in its $z$-transform. The ROC is given as\n", "\n", "\\begin{equation}\n", "\\text{ROC} \\{ x[-k] \\} = \\{z: \\frac{1}{z} \\in \\text{ROC} \\{ x[k] \\} \\}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "The $z$-transform of the anticausal complex exponential signal $x[k] = - z_0^k \\cdot \\epsilon[k - 1]$ is derived by applying a series of transformations to the complex exponential signal $z_0[k] \\cdot \\epsilon[k]$. Reversal of the complex exponential signal yields\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ z_o^{-k} \\cdot \\epsilon[-k] \\} = \\frac{z^{-1}}{z^{-1} - z_0}\n", "\\end{equation}\n", "\n", "Now the shift theorem is applied to the shifted signal\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ z_o^{-k-1} \\cdot \\epsilon[-k-1] \\} = z \\cdot \\frac{z^{-1}}{z^{-1} - z_0}\n", "\\end{equation}\n", "\n", "The factor $z_0^{-1}$ is a constant with respect to the $z$-transform. This yields\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ z_o^{-k} \\cdot \\epsilon[-k-1] \\} = z_0 z \\cdot \\frac{z^{-1}}{z^{-1} - z_0}\n", "\\end{equation}\n", "\n", "By noting that $z_o^{-k} = \\left( \\frac{1}{z_o} \\right)^k$ we get\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ \\left( \\frac{1}{z_o} \\right)^{k} \\cdot \\epsilon[-k-1] \\} = z_0^{-1} z \\cdot \\frac{z^{-1}}{z^{-1} - z_0^{-1}} = \\frac{z}{z_0 - z}\n", "\\end{equation}\n", "\n", "From this, the $z$-transform of the anticausal complex exponential signal follows as\n", "\n", "\\begin{equation}\n", "\\mathcal{Z} \\{ - z_0^{k} \\cdot \\epsilon[-k-1] \\} = \\frac{z}{z - z_0}\n", "\\end{equation}\n", "\n", "By considering the influence of above steps on the ROC, it is derived as \n", "\n", "\\begin{equation}\n", "|z| < |z_0|\n", "\\end{equation}\n", "\n", "Note that the $z$-transform of the anticausal exponential signal is equal to the transform of the causal exponential signal. However, both differ with respect to their ROCs. Above results can be confirmed by numerical evaluation of the definition of the $z$-transform" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\begin{cases} \\frac{z}{z_{0} \\left(- \\frac{z}{z_{0}} + 1\\right)} & \\text{for}\\: \\left|{\\frac{z}{z_{0}}}\\right| < 1 \\\\\\sum_{k=-\\infty}^{-1} z^{- k} z_{0}^{k} & \\text{otherwise} \\end{cases}$" ], "text/plain": [ "⎧ z │z │ \n", "⎪───────────── for │──│ < 1\n", "⎪ ⎛ z ⎞ │z₀│ \n", "⎪z₀⋅⎜- ── + 1⎟ \n", "⎪ ⎝ z₀ ⎠ \n", "⎪ \n", "⎪ -1 \n", "⎨ ___ \n", "⎪ ╲ \n", "⎪ ╲ -k k \n", "⎪ ╱ z ⋅z₀ otherwise \n", "⎪ ╱ \n", "⎪ ‾‾‾ \n", "⎪k = -∞ \n", "⎩ " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z0 = sym.symbols('z0', complex=True)\n", "sym.summation(z0**k * z**(-k), (k, -sym.oo, -1))" ] }, { "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 }