MATLAB 中的低通濾波器

Ammar Ali 2022年5月11日
MATLAB 中的低通濾波器

本教程將討論使用 lowpass() 函式在 Matlab 中設計和過濾訊號。

在 MATLAB 中使用 lowpass() 函式設計和過濾訊號

低通濾波器用於從包含多個頻率的訊號中濾除低頻訊號。

例如,如果我們有一個包含兩個不同頻率訊號的訊號,我們想要過濾低頻訊號。我們可以使用低通濾波器來做到這一點,它只允許輸入訊號中的低頻分量並阻止高頻訊號。

在 MATLAB 中,我們可以使用內建函式 lowpass() 來過濾訊號。

我們必須在 lowpass() 函式中傳遞輸入訊號、通帶頻率和輸入訊號的取樣頻率。輸入訊號應該是單或雙型別的向量或矩陣。

通帶頻率應在取樣頻率的 0 到一半之間。取樣率應該是一個正實數標量。

例如,讓我們建立一個訊號,新增一些隨機噪聲,然後使用 lowpass() 函式對其進行過濾。請參閱下面的程式碼。

clc
clear
freqS = 1e3;
time = 0:1/freqS:1;
signal = [1 2]*sin(2*pi*[50 250]'.*time) + randn(size(time))/10;
lowpass(signal,150,freqS)

輸出:

音調低通濾波器

藍色訊號是輸出中的輸入訊號,另一個是過濾後的訊號。

如上圖所示,低頻訊號被過濾掉了。你還可以檢查功率譜圖以檢查訊號被過濾的通帶頻率。

你可以使用上述程式碼從音樂訊號中過濾高頻噪聲或音調。你還可以將 lowpass() 函式的輸出儲存在一個變數中,但你必須單獨繪製它。

如果我們不指定任何輸出,lowpass() 函式將在同一圖上繪製原始訊號和濾波後的訊號以及它們的頻域圖。我們可以設定 lowpass() 函式的其他屬性,如阻帶衰減、低通濾波器陡度和濾波器的脈衝響應型別。

我們還可以使用 lowpass() 函式從時間表中過濾資料。lowpass() 函式過濾時間表中的所有變數以及每個變數內的所有列。

預設情況下,lowpass() 函式將使用任何脈衝響應。儘管如此,我們可以通過傳遞字串 fir 或通過使用屬性 ImpulseResponselowpass() 函式中傳遞字串 iir 將其更改為有限脈衝響應。

預設陡度值為 0.85,但我們可以使用屬性 steepness 將其設定為 0.5 到 1 區間內的任何值。預設阻帶衰減為 60,但我們可以使用屬性 StopbandAttenuation 以 dB 為單位更改任何正標量。

要更改屬性,我們必須通過其名稱傳遞其值,例如 lowpass(....,'StopbandAttenuation', 60)

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook