.已知y(k)+3y(k-1)+2y(k-2)=f(k),画单位响应波形,并与理论值比较。
时间: 2023-12-26 15:04:25 浏览: 218
首先,我们需要知道这是一个二阶线性差分方程,可以通过 Z 变换求解。将 $y(k)$ 和 $f(k)$ 分别看作系统的输出和输入,则该系统的传递函数为:
$$
H(z) = \frac{1}{1+3z^{-1}+2z^{-2}}
$$
接下来,我们可以使用 MATLAB 或 Python 中的信号处理工具箱来求解该系统的单位响应波形。以 MATLAB 为例,代码如下:
```matlab
num = 1;
den = [1 3 2];
sys = tf(num, den, 1);
t = 0:0.1:10;
impulse(sys, t);
```
其中,`num` 和 `den` 分别是传递函数的分子和分母系数,`tf` 函数可以将它们转化为传递函数对象 `sys`。`t` 是时间轴上的采样点,可以自行指定。最后,使用 `impulse` 函数绘制系统的单位冲激响应波形。
如果你想使用 Python 进行求解,可以使用 `scipy` 库中的 `signal` 模块。代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
num = [1]
den = [1, 3, 2]
sys = signal.TransferFunction(num, den)
t, y = signal.impulse(sys)
plt.plot(t, y)
```
同样,`num` 和 `den` 是传递函数的分子和分母系数,`TransferFunction` 函数可以将它们转化为传递函数对象 `sys`。`t` 和 `y` 分别是时间轴上的采样点和单位冲激响应波形。最后,使用 `plot` 函数绘制波形即可。
最后,和理论值进行比较可以通过计算理论值的方式得到。假设输入信号为 $\delta(k)$,则输出信号为系统的单位冲激响应 $h(k)$。根据差分方程的定义,可以得到:
$$
h(k) + 3h(k-1) + 2h(k-2) = \delta(k)
$$
移项得到:
$$
h(k) = -3h(k-1) - 2h(k-2) + \delta(k)
$$
因为输入信号为单位冲激,所以 $\delta(k)=1$ 当 $k=0$,否则 $\delta(k)=0$。因此,可以按照递推的方式计算出理论值。
阅读全文