在系统分析与设计中,脉冲响应是一个非常重要的概念,尤其在数字信号和控制系统中。在脉冲响应中,我们考虑一个系统被一个脉冲信号所激发的响应。
Matlab 是一个十分强大的数学计算软件,其中包含了一系列工具箱,其中就包括了信号处理、控制系统等工具箱。在 Matlab 中可以轻松地进行脉冲响应的模拟与绘制,本文将着重介绍如何使用 Matlab 自带的 impulse 函数进行脉冲响应图形的生成。
1. impulse 函数介绍
Matlab 中的 impulse 函数用于生成单位冲激信号的响应。它可以接收一个系统的传递函数 H(s) 或者状态空间矩阵 A、B、C 和 D,同时也可以接收一个任意长度的向量 t,用于指定时间轴。
它的基本语法如下:
h = impulse(sys, t)
其中 sys 表示一个系统的传递函数 H(s) 或者状态空间矩阵 A、B、C 和 D,t 是一个任意长度的向量,用于指定时间轴,h 是一个与 t 同长度的向量,包含了系统对一个单位冲激信号的响应。
2. impulse 函数使用示例
下面我们将用一个具体的例子来介绍如何使用 impulse 函数进行脉冲响应的模拟与绘制。
例 1:求解二阶系统的脉冲响应
对于一个二阶系统,其定义为:
$$
\frac{d^2y}{dt^2} + 2 \zeta \omega_n \frac{dy}{dt} + \omega_n^2 y = u(t)
$$
其中 $\zeta$ 表示阻尼比,$\omega_n$ 表示系统的自然频率。
我们可以将上述方程转化为传递函数形式:
$$
H(s) = \frac{1}{s^2 + 2 \zeta \omega_n s + \omega_n^2}
$$
现在,我们将使用 Matlab 中的 impulse 函数来绘制这个系统的脉冲响应图形。
首先,我们需要定义系统的阻尼比和自然频率:
```
zeta = 0.5;
wn = 10;
```
接下来,我们可以使用 tf 函数来定义系统的传递函数:
```
sys = tf(1, [1 2*zeta*wn wn^2]);
```
然后,我们可以定义一个时间轴:
```
t = 0:0.01:2;
```
最后,我们可以使用 impulse 函数来求解系统的脉冲响应:
```
h = impulse(sys, t);
```
绘制脉冲响应图形:
```
plot(t, h)
xlabel('Time (s)')
ylabel('Amplitude')
title('Pulse Response of a Second Order System')
```
下图为该系统的脉冲响应图形:

可以看到,该系统的脉冲响应图形具有一定的振动,这是由于系统存在阻尼的缘故。
3. 小结
本文介绍了如何使用 Matlab 中的 impulse 函数进行脉冲响应图形的生成。通过这个例子,我们可以看到,Matlab 中的 impulse 函数非常方便实用,可以帮助工程师们快速地进行信号分析与系统设计。在实际应用中,我们可以根据自己的需要,自由地对 impulse 函数进行调用,以便有效地完成相关任务。