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 或通過使用屬性 ImpulseResponse
在 lowpass()
函式中傳遞字串 iir
將其更改為有限脈衝響應。
預設陡度值為 0.85,但我們可以使用屬性 steepness
將其設定為 0.5 到 1 區間內的任何值。預設阻帶衰減為 60,但我們可以使用屬性 StopbandAttenuation
以 dB 為單位更改任何正標量。
要更改屬性,我們必須通過其名稱傳遞其值,例如 lowpass(....,'StopbandAttenuation', 60)
。