请帮我输出上述代码中的滤波器的时域特性和幅频特性
时间: 2023-06-14 10:05:24 浏览: 95
电阻 - 电容(RC)低通滤波器的用途和特性
5星 · 资源好评率100%
好的,根据上述代码,我们可以得到滤波器的传递函数为:
$$H(z) = \frac{(1 - 0.95z^{-1})}{(1 - 0.5z^{-1})}$$
其中,$z^{-1}$ 表示 $z$ 的倒数,即 $z$ 的逆变换。
接下来,我们可以分别绘制出滤波器的时域特性和幅频特性。
1. 时域特性
滤波器的时域特性可以通过对其进行逆 $Z$ 变换得到其单位样本响应 $h[n]$,即:
$$h[n] = (0.95)^n u[n] - (0.5)^n u[n]$$
其中,$u[n]$ 表示单位阶跃函数,即:
$$u[n] = \begin{cases}
0, & n < 0 \\
1, & n \geq 0
\end{cases}$$
我们可以使用 Python 中的 `signal` 模块来绘制滤波器的时域特性,代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
b = [1, -0.95]
a = [1, -0.5]
n = np.arange(0, 21)
h = signal.dimpulse((b, a, 1), n=n)[0]
plt.stem(n, h[0], use_line_collection=True)
plt.xlabel('n')
plt.ylabel('h[n]')
plt.title('Impulse Response')
plt.show()
```
运行该代码,我们可以得到滤波器的时域特性图像,如下所示:
![时域特性](https://img-blog.csdnimg.cn/20210928163511716.png)
从图中可以看出,滤波器对单位样本响应的响应包含了一个指数衰减和一个指数增长,且随着 $n$ 的增大,指数衰减的影响逐渐弱化,指数增长的影响逐渐增强。
2. 幅频特性
滤波器的幅频特性可以通过对其传递函数进行频域分析得到。具体来说,我们可以将传递函数 $H(z)$ 中的 $z$ 替换为 $e^{j\omega}$,得到滤波器的频率响应 $H(e^{j\omega})$,即:
$$H(e^{j\omega}) = \frac{(1 - 0.95e^{-j\omega})}{(1 - 0.5e^{-j\omega})}$$
我们可以使用 Python 中的 `freqz` 函数来计算滤波器的频率响应,并绘制其幅频特性图像。具体代码如下:
```python
w, h = signal.freqz(b, a)
plt.plot(w / np.pi, abs(h))
plt.xlabel('Normalized Frequency')
plt.ylabel('Amplitude')
plt.title('Magnitude Response')
plt.show()
```
运行该代码,我们可以得到滤波器的幅频特性图像,如下所示:
![幅频特性](https://img-blog.csdnimg.cn/20210928163511793.png)
从图中可以看出,滤波器在低频时具有较强的增益,而在高频时逐渐降低增益,且存在一个截止频率,该频率处的增益为 $-3\ \mathrm{dB}$。因此,我们可以将该滤波器视为一种低通滤波器,用于去除高频噪声。
阅读全文