已知系统的差分方程为:y(n)=-a1y(n-1)-a2y(n-2)+bx(n),其中a1=-0.8,a2=0.64,b=0.866。 (1)编写求解系统单位脉冲响应h(n)()的程序,并画出h(n) (2)编写求解系统零状态单位阶跃响应s(n)()的程序,并画出s(n)
时间: 2025-01-01 22:37:05 浏览: 13
这是一个离散时间线性系统的差分方程,其中 y(n) 表示系统的当前输出,x(n) 是输入信号,而 h(n) 是系统的单位脉冲响应,s(n) 是零状态响应。根据给定的系数 a1、a2 和 b,我们可以使用Z变换或者递推法来计算这两个响应。
(1)编写求解单位脉冲响应 h(n) 的程序(假设我们使用Python的numpy库):
```python
import numpy as np
# 系统常数
a1 = -0.8
a2 = 0.64
b = 0.866
# 计算Z变换传递函数
num = [1]
den = [1, a1, a2]
# 使用ztransform函数求得H(z)
H_z = num / den
# 计算单位脉冲响应h(n)
def unit_impulse_response(n):
h = np.zeros(n+1)
for k in range(1, n+1):
h[k] = H_z[0] * (np.exp(-1j * (k-1) * np.angle(H_z[1]))) if abs(H_z[1]) != 0 else 0
return h
# 画出h(n)
import matplotlib.pyplot as plt
h_n = unit_impulse_response(50)
plt.stem(range(len(h_n)), h_n, use_line_collection=True)
plt.xlabel('n')
plt.ylabel('h(n)')
plt.title('Unit Impulse Response h(n)')
plt.show()
```
注意:这个例子假设了H(z)是一个稳定的系统,如果需要考虑稳定性条件,请先检查极点位置。
(2)编写求解零状态响应 s(n) 的程序:
```python
# 零状态响应s(n)可以通过单位脉冲响应h(n)直接得到,因为对于初始状态为零的系统,s(n) = h(n)
def zero_state_response(n):
return unit_impulse_response(n)
# 画出s(n)
s_n = zero_state_response(50)
plt.stem(range(len(s_n)), s_n, use_line_collection=True)
plt.xlabel('n')
plt.ylabel('s(n)')
plt.title('Zero State Response s(n)')
plt.show()
```
阅读全文