@sym: ztrans (f, n, z) ¶@sym: ztrans (f) ¶@sym: ztrans (f, z) ¶Symbolic one-sided Z-transform.
The one-sided Z-transform of a function f of n is a function X of z defined by the Laurent series below.
syms n nonnegative integer
syms f(n)
syms z nonzero complex
X(z) = ztrans (f)
⇒ X(z) = (symfun)
∞
___
╲
╲ -n
╱ z ⋅f(n)
╱
‾‾‾
n = 0
Example:
syms n
f = n^2;
ztrans (f)
⇒ (sym)
⎧ 1
⎪ -1 - ─
⎪ z 1
⎪─────────── for ─── < 1
⎪ 3 │z│
⎪ ⎛ 1⎞
⎪z⋅⎜-1 + ─⎟
⎪ ⎝ z⎠
⎨
⎪ ∞
⎪ ___
⎪ ╲
⎪ ╲ 2 -n
⎪ ╱ n ⋅z otherwise
⎪ ╱
⎪ ‾‾‾
⎩n = 0
By default the output is a function of z (or w if z is
an independent variable of f). This can be overridden by specifying
z. For example:
syms n z w
ztrans (exp (n))
⇒ (sym)
⎧ 1 ℯ
⎪ ───── for ─── < 1
⎪ ℯ │z│
⎪ 1 - ─
⎪ z
⎪
⎪ ∞
⎨ ___
⎪ ╲
⎪ ╲ -n n
⎪ ╱ z ⋅ℯ otherwise
⎪ ╱
⎪ ‾‾‾
⎪n = 0
⎩
ztrans (exp (z))
⇒ (sym)
⎧ 1 ℯ
⎪ ───── for ─── < 1
⎪ ℯ │w│
⎪ 1 - ─
⎪ w
⎪
⎪ ∞
⎨ ___
⎪ ╲
⎪ ╲ -z z
⎪ ╱ w ⋅ℯ otherwise
⎪ ╱
⎪ ‾‾‾
⎪z = 0
⎩
ztrans (exp (n), w)
⇒ (sym)
⎧ 1 ℯ
⎪ ───── for ─── < 1
⎪ ℯ │w│
⎪ 1 - ─
⎪ w
⎪
⎪ ∞
⎨ ___
⎪ ╲
⎪ ╲ -n n
⎪ ╱ w ⋅ℯ otherwise
⎪ ╱
⎪ ‾‾‾
⎪n = 0
⎩
If not specified by n, the independent variable is chosen by
looking for a symbol named n. If no such symbol is found,
see ‘@sym/symvar’ is used, which choses a variable close to x:
syms a n y
ztrans (n * exp (y))
⇒ (sym)
⎛⎧ 1 1 ⎞
⎜⎪────────── for ─── < 1⎟
⎜⎪ 2 │z│ ⎟
⎜⎪ ⎛ 1⎞ ⎟
⎜⎪z⋅⎜1 - ─⎟ ⎟
⎜⎪ ⎝ z⎠ ⎟
⎜⎪ ⎟ y
⎜⎨ ∞ ⎟⋅ℯ
⎜⎪ ___ ⎟
⎜⎪ ╲ ⎟
⎜⎪ ╲ -n ⎟
⎜⎪ ╱ n⋅z otherwise ⎟
⎜⎪ ╱ ⎟
⎜⎪ ‾‾‾ ⎟
⎝⎩n = 0 ⎠
ztrans (a * exp (y))
⇒ (sym)
⎛⎧ 1 ℯ ⎞
⎜⎪ ───── for ─── < 1⎟
⎜⎪ ℯ │z│ ⎟
⎜⎪ 1 - ─ ⎟
⎜⎪ z ⎟
⎜⎪ ⎟
⎜⎪ ∞ ⎟
a⋅⎜⎨ ___ ⎟
⎜⎪ ╲ ⎟
⎜⎪ ╲ -y y ⎟
⎜⎪ ╱ z ⋅ℯ otherwise ⎟
⎜⎪ ╱ ⎟
⎜⎪ ‾‾‾ ⎟
⎜⎪y = 0 ⎟
⎝⎩ ⎠
f, n and z can be scalars or matrices of the same size.
Scalar inputs are first expanded to matrices to match the size of the
non-scalar inputs. Then ztrans will be applied elementwise.
syms n m k c z w u v
f = [n^2 exp(n); 1/factorial(k) kroneckerDelta(c)];
ztrans (f, [n m; k c], [z w; u v])
⇒ (sym 2×2 matrix)
⎡⎧ 1 ⎤
⎢⎪ -1 - ─ ⎛⎧ 1 1 ⎞ ⎥
⎢⎪ z 1 ⎜⎪ ───── for ─── < 1⎟ ⎥
⎢⎪─────────── for ─── < 1 ⎜⎪ 1 │w│ ⎟ ⎥
⎢⎪ 3 │z│ ⎜⎪ 1 - ─ ⎟ ⎥
⎢⎪ ⎛ 1⎞ ⎜⎪ w ⎟ ⎥
⎢⎪z⋅⎜-1 + ─⎟ ⎜⎪ ⎟ ⎥
⎢⎪ ⎝ z⎠ ⎜⎪ ∞ ⎟ n⎥
⎢⎨ ⎜⎨ ___ ⎟⋅ℯ ⎥
⎢⎪ ∞ ⎜⎪ ╲ ⎟ ⎥
⎢⎪ ___ ⎜⎪ ╲ -m ⎟ ⎥
⎢⎪ ╲ ⎜⎪ ╱ w otherwise ⎟ ⎥
⎢⎪ ╲ 2 -n ⎜⎪ ╱ ⎟ ⎥
⎢⎪ ╱ n ⋅z otherwise ⎜⎪ ‾‾‾ ⎟ ⎥
⎢⎪ ╱ ⎜⎪m = 0 ⎟ ⎥
⎢⎪ ‾‾‾ ⎝⎩ ⎠ ⎥
⎢⎩n = 0 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢ ─ ⎥
⎢ u ⎥
⎣ ℯ 1 ⎦
ztrans (f, [n m; k c], z)
⇒ (sym 2×2 matrix)
⎡⎧ 1 ⎤
⎢⎪ -1 - ─ ⎛⎧ 1 1 ⎞ ⎥
⎢⎪ z 1 ⎜⎪ ───── for ─── < 1⎟ ⎥
⎢⎪─────────── for ─── < 1 ⎜⎪ 1 │z│ ⎟ ⎥
⎢⎪ 3 │z│ ⎜⎪ 1 - ─ ⎟ ⎥
⎢⎪ ⎛ 1⎞ ⎜⎪ z ⎟ ⎥
⎢⎪z⋅⎜-1 + ─⎟ ⎜⎪ ⎟ ⎥
⎢⎪ ⎝ z⎠ ⎜⎪ ∞ ⎟ n⎥
⎢⎨ ⎜⎨ ___ ⎟⋅ℯ ⎥
⎢⎪ ∞ ⎜⎪ ╲ ⎟ ⎥
⎢⎪ ___ ⎜⎪ ╲ -m ⎟ ⎥
⎢⎪ ╲ ⎜⎪ ╱ z otherwise ⎟ ⎥
⎢⎪ ╲ 2 -n ⎜⎪ ╱ ⎟ ⎥
⎢⎪ ╱ n ⋅z otherwise ⎜⎪ ‾‾‾ ⎟ ⎥
⎢⎪ ╱ ⎜⎪m = 0 ⎟ ⎥
⎢⎪ ‾‾‾ ⎝⎩ ⎠ ⎥
⎢⎩n = 0 ⎥
⎢ ⎥
⎢ 1 ⎥
⎢ ─ ⎥
⎢ z ⎥
⎣ ℯ 1 ⎦
As of sympy 1.10.1, sympy cannot find the closed form of one-sided Z-transform involving trigonometric functions and Heaviside step function.
syms n
ztrans (cos (n))
⇒ (sym)
∞
___
╲
╲ -n
╱ z ⋅cos(n)
╱
‾‾‾
n = 0
ztrans (heaviside (n - 3))
⇒ (sym)
∞
___
╲
╲ -n
╱ z ⋅θ(n - 3)
╱
‾‾‾
n = 0
Package: symbolic