z变换在信号处理中非常重要。我可以在sympy教程中找到傅立叶,拉普拉斯,余弦变换等。但我不知道如何使用sympy进行z变换。你能告诉我怎么做吗?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
我在代码示例中添加了两个注释,说明如何在此处进行转换,请注意它们并不总是有效。
答案 2 :(得分:0)
有一个不错的包 (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)