本文將帶領(lǐng)大家了解MATLAB中常用的濾波系數(shù)計(jì)算處理函數(shù)。 濾波是信號(hào)處理中的一項(xiàng)基本操作,它允許我們從信號(hào)中去除或保留特定頻率成分。
MATLAB提供了多種濾波器設(shè)計(jì)函數(shù),其中最著名的是 butter 和 fir1 函數(shù)。 1、butter 函數(shù)(巴特沃斯濾波器)
butter 函數(shù)用于設(shè)計(jì)巴特沃斯濾波器,這是一種最平坦的無波紋響應(yīng)濾波器。
函數(shù)定義: [b, a] = butter(N, Wn, 'ftype') 參數(shù)說明: - N : 濾波器的階數(shù)。 - Wn : 歸一化截止頻率,對(duì)于低通和高通濾波器是標(biāo)量,對(duì)于帶通和帶阻濾波器是兩個(gè)元素的向量如[Wp Ws]。 - 'ftype' : 可指定濾波器的類型(低通'low'、高通'high'、帶通'bandpass'、帶阻'bandstop')。 代碼示例:設(shè)計(jì)一個(gè)4階巴特沃斯低通濾波器,截止頻率為300Hz,采樣頻率為1000Hz。
% 設(shè)計(jì)參數(shù) N = 4; % 濾波器階數(shù) Wn = 300 / (1000/2); % 歸一化截止頻率,除以Nyquist頻率(采樣頻率的一半)
% 計(jì)算濾波器系數(shù) [b, a] = butter(N, Wn, 'low');
% 繪制頻率響應(yīng) [h, w] = freqz(b, a, 1024, 1000); figure; plot(w, 20*log10(abs(h))); title('4階巴特沃斯低通濾波器的幅度響應(yīng)'); xlabel('頻率 (Hz)'); ylabel('幅度 (dB)');
2、cheby1 函數(shù)(切比雪夫I型濾波器) cheby1 函數(shù)用于設(shè)計(jì)切比雪夫I型濾波器,這種濾波器在通帶內(nèi)提供等波紋響應(yīng)。
函數(shù)定義: [b, a] = cheby1(N, Rp, Wn, 'ftype') 參數(shù)說明: - N : 濾波器的階數(shù)。 - Rp : 通帶內(nèi)的最大紋波(以分貝為單位)。 - Wn : 歸一化截止頻率,對(duì)于低通和高通濾波器是標(biāo)量,對(duì)于帶通和帶阻濾波器是兩個(gè)元素的向量如[Wp Ws]。
- 'ftype' : 指定濾波器的類型,可以是'low'(低通)、'high'(高通)、'bandpass'(帶通)或'bandstop'(帶阻)。
代碼示例: % 設(shè)計(jì)參數(shù) N = 4; % 濾波器階數(shù) Rp = 1; % 通帶紋波 (dB) Wn = 300 / (1000/2); % 歸一化截止頻率 [b, a] = cheby1(N, Rp, Wn, 'low'); % 計(jì)算濾波器系數(shù)
% 繪制頻率響應(yīng) [h, w] = freqz(b, a, 1024, 1000); figure; plot(w, 20*log10(abs(h))); title('切比雪夫I型低通濾波器的幅度響應(yīng)'); xlabel('頻率 (Hz)'); ylabel('幅度 (dB)');
3、cheby2 函數(shù)(切比雪夫II型濾波器)
cheby2 函數(shù)用于設(shè)計(jì)切比雪夫II型濾波器,這種濾波器在阻帶內(nèi)提供等波紋響應(yīng)。
函數(shù)定義: [b, a] = cheby2(N, Rs, Wn, 'ftype') 參數(shù)說明: - N : 濾波器的階數(shù)。 - Rs : 阻帶內(nèi)的最小衰減(以分貝為單位)。 - Wn : 歸一化截止頻率,對(duì)于低通和高通濾波器是標(biāo)量,對(duì)于帶通和帶阻濾波器是兩個(gè)元素的向量如[Wp Ws]。
- 'ftype' : 指定濾波器的類型,可以是'low'(低通)、'high'(高通)、'bandpass'(帶通)或'bandstop'(帶阻)。
代碼示例: % 設(shè)計(jì)參數(shù) N = 4; % 濾波器階數(shù) Rs = 40; % 阻帶衰減 (dB) Wn = 300 / (1000/2); % 歸一化截止頻率 [b, a] = cheby2(N, Rs, Wn, 'low'); % 計(jì)算濾波器系數(shù)
% 繪制頻率響應(yīng) [h, w] = freqz(b, a, 1024, 1000); figure; plot(w, 20*log10(abs(h))); title('切比雪夫II型低通濾波器的幅度響應(yīng)'); xlabel('頻率 (Hz)'); ylabel('幅度 (dB)');
4、ellip 函數(shù)(橢圓濾波器)
ellip 函數(shù)用于設(shè)計(jì)橢圓濾波器,這種濾波器在通帶和阻帶內(nèi)都提供等波紋響應(yīng)。
函數(shù)定義: [b, a] = ellip(N, Rp, Rs, Wn, 'ftype') 參數(shù)說明: - N : 濾波器的階數(shù)。 - Rp : 通帶內(nèi)的最大紋波(以分貝為單位)。 - Rs : 阻帶內(nèi)的最小衰減(以分貝為單位)。 - Wn : 歸一化截止頻率,對(duì)于低通和高通濾波器是標(biāo)量,對(duì)于帶通和帶阻濾波器是兩個(gè)元素的向量如[Wp Ws]。
- 'ftype' : 指定濾波器的類型,可以是'low'(低通)、'high'(高通)、'bandpass'(帶通)或'bandstop'(帶阻)。
代碼示例: % 設(shè)計(jì)參數(shù) N = 4; % 濾波器階數(shù) Rp = 1; % 通帶紋波 (dB) Rs = 40; % 阻帶衰減 (dB) Wn = 300 / (1000/2); % 歸一化截止頻率 [b, a] = ellip(N, Rp, Rs, Wn, 'low'); % 計(jì)算濾波器系數(shù)
% 繪制頻率響應(yīng) [h, w] = freqz(b, a, 1024, 1000); figure; plot(w, 20*log10(abs(h))); title('橢圓低通濾波器的幅度響應(yīng)'); xlabel('頻率 (Hz)'); ylabel('幅度 (dB)');
5、fir1 函數(shù)(有限沖激響應(yīng)(FIR)濾波器)
fir1 函數(shù)用于設(shè)計(jì)基于窗口法的FIR濾波器,這種濾波器具有線性相位特性,且不會(huì)產(chǎn)生相位失真。
函數(shù)定義: b = fir1(N, Wn, 'ftype', 'window') 參數(shù)說明: - N : 濾波器的階數(shù)(實(shí)際上是濾波器的長度,N+1是濾波器的系數(shù)數(shù)量)。 - Wn : 歸一化截止頻率,對(duì)于低通和高通濾波器是一個(gè)標(biāo)量,對(duì)于帶通和帶阻濾波器是一個(gè)包含兩個(gè)元素的向量。 - 'ftype' : 指定濾波器的類型,可以是'low'(低通)、'high'(高通)、'bandpass'(帶通)或'bandstop'(帶阻)。 - 'window' : 可選參數(shù),指定窗口函數(shù),如'hamming'、'hanning'、'blackman'等。如果不指定,默認(rèn)使用矩形窗。
代碼示例: % 設(shè)計(jì)參數(shù) N = 31; % 濾波器階數(shù)(實(shí)際上是濾波器的長度) Wn = 0.3; % 歸一化截止頻率 ftype = 'low'; % 指定濾波器類型為低通 window = hamming(N+1); % 使用漢明窗
% 計(jì)算濾波器系數(shù) b = fir1(N, Wn, ftype, window);
% 繪制頻率響應(yīng) [h, w] = freqz(b, 1, 1024, 1000); % 注意這里第二個(gè)參數(shù)是1,因?yàn)镕IR濾波器沒有a系數(shù) figure; plot(w, 20*log10(abs(h))); title('FIR低通濾波器的幅度響應(yīng)'); xlabel('頻率 (Hz)'); ylabel('幅度 (dB)');
如果需要更多學(xué)習(xí)資料和源碼,想要學(xué)習(xí)FPGA實(shí)戰(zhàn)入門進(jìn)階,請(qǐng)閱讀下面這篇文章:
|