(2)考虑差分方程𝑦[𝑛] − 𝑎𝑦[𝑛 − 1] = 𝑥[𝑛],其中|𝑎| < 1。取𝑎 = 0.2,编程求 解该方程所描述系统的频率响应,并: (a)画出系统的幅频和相频特性曲线; (b)求解系统的单位脉冲响应并绘制出图形。 注意是用python来给出代码
时间: 2024-02-12 10:07:40 浏览: 49
差分方程及其应用[有例子]
首先,我们可以将差分方程转换为系统函数的形式:
$$H(z) = \frac{1}{1 - az^{-1}}$$
其中 $z^{-1}$ 表示时域上的单位延迟,$a$ 是差分方程中的系数。
接着,我们可以使用 Python 中的信号处理库 `scipy.signal` 来绘制幅频和相频特性曲线以及单位脉冲响应。具体代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 差分方程的系数
a = 0.2
# 系统函数
b = [1]
a = [1, -a]
# 绘制幅频和相频特性曲线
w, h = signal.freqz(b, a)
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
ax1.plot(w, 20 * np.log10(abs(h)))
ax1.set_title('Amplitude response')
ax1.set_xlabel('Frequency [rad/sample]')
ax1.set_ylabel('Amplitude [dB]')
ax1.grid(True)
ax2.plot(w, np.angle(h))
ax2.set_title('Phase response')
ax2.set_xlabel('Frequency [rad/sample]')
ax2.set_ylabel('Phase [rad]')
ax2.grid(True)
plt.tight_layout()
plt.show()
# 求解系统的单位脉冲响应并绘制出图形
n = 50
impulse = np.zeros(n)
impulse[0] = 1
h = signal.lfilter(b, a, impulse)
plt.stem(h)
plt.title('Impulse response')
plt.xlabel('Sample')
plt.ylabel('Amplitude')
plt.show()
```
运行以上代码,就可以得到幅频和相频特性曲线以及单位脉冲响应的图像。
阅读全文