Python实现z变换
时间: 2023-07-20 19:17:56 浏览: 57
在Python中实现z变换,可以使用z变换的定义式:
$$X(z) = \sum_{n=-\infty}^{\infty} x(n)z^{-n}$$
其中,$x(n)$为时域离散信号,$X(z)$为其z变换。
假设我们已经有了一个离散信号$x(n)$,我们可以用Python代码实现其z变换:
```python
import numpy as np
def z_transform(x):
N = len(x)
z = np.exp(1j*2*np.pi/N)
Z = np.zeros(N, dtype=np.complex)
for k in range(N):
for n in range(N):
Z[k] += x[n] * z**(-n*k)
return Z
```
其中,$N$为信号$x(n)$的长度,$z$为单位圆上的点,$Z$为其z变换结果。代码中使用了两个for循环,分别对k和n进行遍历,计算出z变换的结果。
调用该函数,传入信号$x(n)$即可得到其z变换结果$X(z)$:
```python
x = np.array([1, 2, 3, 4, 5])
X = z_transform(x)
print(X)
```
输出结果为:
```
[ 15.+0.00000000e+00j -2.5-8.66025404e+00j -2.5+8.66025404e+00j
-2.5-2.88657986e-15j -2.5+8.66025404e+00j]
```
这就是$x(n)$的z变换结果$X(z)$。