如何在 MATLAB 中计算脉冲响应?


在本文中,我们将学习**如何计算系统在 MATLAB 中的脉冲响应。脉冲响应**是用于分析和理解系统对脉冲输入行为的基本概念。

它主要用于分析线性时不变系统,如数字滤波器、电子电路、信号处理系统、控制系统等。

系统的脉冲响应可以定义如下

当对系统施加脉冲输入信号时,系统的响应称为**脉冲响应**。对于连续时间系统,它表示为 h(t),对于离散时间系统,它表示为 h[n]。

脉冲响应用于在时域中指定系统对脉冲输入信号的响应。其中,**脉冲信号**是在时间上无限小且幅度无限大的信号。

在数学上,脉冲信号表示如下

对于连续时间系统 (CTS)

$$\mathrm{\delta(t)\:=\:0;\:for\:t
eq 0}$$

$$\mathrm{\int_{−\infty}^{\infty}\delta(t)dt\:=\:1}$$

对于离散时间系统 (DTS)

$$\mathrm{\delta[n]\:=\:0;\:for\:n
eq 0}$$

$$\mathrm{\sum_{−\infty}^{\infty} \delta[n]\:=\:1}$$

总的来说,系统的脉冲响应允许我们分析和研究系统的稳定性、时域特性、频率响应等行为。

在 MATLAB 中计算脉冲响应的算法

下面描述了在 MATLAB 中计算系统脉冲响应的分步过程

**步骤 (1)** - 通过系统的传递函数或差分方程来定义系统。

**步骤 (2)** - 使用 MATLAB 的内置函数“impulse”计算系统的脉冲响应。

**步骤 (3)** - 使用“plot”函数绘制系统的脉冲响应。此步骤以图形方式可视化脉冲响应。

现在,让我们考虑一些 MATLAB 中的示例程序来计算和可视化系统的脉冲响应。

示例 (1) - 一阶系统的脉冲响应

以下 MATLAB 程序演示了一阶系统的脉冲响应的计算和可视化。

假设以下传递函数表示一阶系统

$$\mathrm{H(s)\:=\:\frac{2}{3s+2}}$$

示例

% MATLAB code for computing the impulse Response of a second-order digital filter
% Specify the difference equation coefficients of the filter
ff = [0.7, 0.35, 0.55];	% Feedforward coefficients
fb = 1;			% Feedback coefficient i.e., no feedback
% Create a sample vector
n = 0:5;	% Adjust as per need
% Compute the impulse response of the system
h = impz(ff, fb, n);
% Plot the impulse response
stem(n, h); title('Impulse Response of Second-Order Digital Filter');
xlabel('Sample Index (n)');
ylabel('Impulse Response');
grid on;

输出

代码说明

在这个 MATLAB 程序中,我们首先定义一阶系统的传递函数。然后,我们创建系统的传递函数模型。接下来,我们使用“impulse”函数计算系统的脉冲响应。最后,我们使用“plot”函数绘制系统的脉冲响应。

示例 (2) - 二阶递归数字滤波器的脉冲响应

以下 MATLAB 程序演示了具有无限脉冲响应的二阶递归数字滤波器的脉冲响应的计算。

假设以下差分方程表示数字滤波器

r[n] = 0.7c[n]+0.35c[n−1]+0.55c[n−2]

示例

% MATLAB code for computing the impulse Response of a second-order digital filter
% Specify the difference equation coefficients of the filter
ff = [0.7, 0.35, 0.55];	% Feedforward coefficients
fb = 1;			% Feedback coefficient i.e., no feedback
% Create a sample vector
n = 0:5;	% Adjust as per need
% Compute the impulse response of the system
h = impz(ff, fb, n);
% Plot the impulse response
stem(n, h); title('Impulse Response of Second-Order Digital Filter');
xlabel('Sample Index (n)');
ylabel('Impulse Response');
grid on;

输出

代码说明

在这个 MATLAB 程序中,我们首先定义一阶系统的传递函数。然后,我们创建系统的传递函数模型。接下来,我们使用“impulse”函数计算系统的脉冲响应。最后,我们使用“plot”函数绘制系统的脉冲响应。

结论

因此,这就是使用 MATLAB 计算系统脉冲响应的全部内容。MATLAB 提供了两个内置函数,即“impulse”和“impz”,分别用于计算连续时间系统和离散时间系统的脉冲响应。以上示例程序说明了如何利用这些函数来计算脉冲响应。

更新于: 2023年8月7日

501 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.