如何在 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.