z变换在信号处理中非常重要。我可以在sympy教程中找到傅里叶、拉普拉斯、余弦变换等。但我不知道如何使用 sympy 进行 z 变换。你能告诉我该怎么做吗?
有一个很好的包(lcapy),它基于 sympy,但可以进行 z 变换和逆运算以及更多其他时间离散的东西。
https://pypi.org/project/lcapy/
只要尝试一下
import lcapy as lc
from lcapy.discretetime import n
xk=n*2**n*lc.exp(3j*n)
X0=xk.ZT()
print(X0)
SymPy 尚未将其实现为变换函数,但您可以直接表示求和。然而,经过一番使用后,它看起来实际可以计算的总和是有限的。这是一个有效的示例:
>>> pprint(summation(n*z**-n, (n, -oo, oo)))
⎧ z 1 │1│
⎪- ───────── + ────────── for │─│ < 1 ∧ │z│ < 1
⎪ 2 2 │z│
⎪ (-z + 1) ⎛ 1⎞
⎪ z⋅⎜1 - ─⎟
⎪ ⎝ z⎠
⎪
⎨ ∞
⎪ ___
⎪ ╲
⎪ ╲ -n
⎪ ╱ n⋅z otherwise
⎪ ╱
⎪ ‾‾‾
⎩ False
我在此处添加了两条带有代码示例的注释,说明如何在此处进行转换,请注意它们并不总是有效。