1 漢明窗低通濾波器 :
在Matlab中使用漢明窗設(shè)計(jì)低通濾波器可以通過(guò)fir1函數(shù)實(shí)現(xiàn)。漢明窗通常用于設(shè)計(jì)濾波器,可以提供更突出的頻率特性。
下面是一個(gè)示例代碼,演示如何在Matlab中使用漢明窗設(shè)計(jì)低通濾波器:
% 定義濾波器參數(shù) fs = 1000; % 采樣頻率 cutOffFreq = 100; % 截止頻率 filterOrder = 50; % 濾波器階數(shù) % 計(jì)算歸一化的截止頻率 nyquistFreq = fs/2; normalizedCutoffFreq = cutOffFreq/nyquistFreq; % 設(shè)計(jì)漢明窗濾波器 b = fir1(filterOrder, normalizedCutoffFreq, 'low', hamming(filterOrder+1)); % 繪制頻率響應(yīng) freqz(b, 1, 1024, fs);
在上述示例中,我們首先定義了濾波器的采樣頻率、截止頻率和階數(shù)。然后,使用fir1函數(shù)通過(guò)指定漢明窗來(lái)設(shè)計(jì)低通濾波器,并繪制了濾波器的頻率響應(yīng)。
這段代碼生成了一個(gè)漢明窗低通濾波器,其階數(shù)為50,截止頻率為100Hz,采樣頻率為1000Hz。可以根據(jù)需要調(diào)整這些參數(shù)來(lái)滿足特定的濾波需求。
2 漢寧窗帶通濾波器:
在Matlab中使用漢寧窗設(shè)計(jì)帶通濾波器可以通過(guò)fir1函數(shù)結(jié)合漢寧窗來(lái)實(shí)現(xiàn)。漢寧窗是一種常用的窗函數(shù),可以用于提高濾波器的頻率響應(yīng)特性。
以下是一個(gè)示例代碼,演示如何在Matlab中使用漢寧窗設(shè)計(jì)帶通濾波器:
% 定義濾波器參數(shù) fs = 1000; % 采樣頻率 f1 = 50; % 通帶下限頻率 f2 = 200; % 通帶上限頻率 filterOrder = 50; % 濾波器階數(shù) % 計(jì)算歸一化的通帶頻率 nyquistFreq = fs/2; normalizedCutoffFreq = [f1 f2] / nyquistFreq; % 設(shè)計(jì)漢寧窗帶通濾波器 b = fir1(filterOrder, normalizedCutoffFreq, 'bandpass', hann(filterOrder+1)); % 繪制頻率響應(yīng) freqz(b, 1, 1024, fs);
在上述示例中,我們首先定義了濾波器的采樣頻率、通帶頻率范圍和階數(shù)。然后,使用fir1函數(shù)通過(guò)指定漢寧窗來(lái)設(shè)計(jì)帶通濾波器,并繪制了濾波器的頻率響應(yīng)。
這段代碼生成了一個(gè)漢寧窗帶通濾波器,其階數(shù)為50,通帶頻率范圍為50Hz到200Hz,采樣頻率為1000Hz。可以根據(jù)需要調(diào)整這些參數(shù)來(lái)滿足特定的濾波需求。
3 布萊克曼窗高通濾波器:
在Matlab中使用布萊克曼(Blackman)窗設(shè)計(jì)高通濾波器可以通過(guò)fir1函數(shù)結(jié)合布萊克曼窗來(lái)實(shí)現(xiàn)。
以下是一個(gè)示例代碼,演示如何在Matlab中使用布萊克曼窗設(shè)計(jì)高通濾波器:
% 定義濾波器參數(shù) fs = 1000; % 采樣頻率 cutOffFreq = 100; % 截止頻率 filterOrder = 50; % 濾波器階數(shù) % 計(jì)算歸一化的截止頻率 nyquistFreq = fs/2; normalizedCutoffFreq = cutOffFreq/nyquistFreq; % 設(shè)計(jì)布萊克曼窗高通濾波器 b = fir1(filterOrder, normalizedCutoffFreq, 'high', blackman(filterOrder+1)); % 繪制頻率響應(yīng) freqz(b, 1, 1024, fs);
在上面的示例中,我們首先定義了濾波器的采樣頻率、截止頻率和階數(shù)。然后,使用fir1函數(shù)通過(guò)指定布萊克曼窗來(lái)設(shè)計(jì)高通濾波器,并繪制了濾波器的頻率響應(yīng)。
這段代碼生成了一個(gè)布萊克曼窗高通濾波器,其階數(shù)為50,截止頻率為100Hz,采樣頻率為1000Hz。可以根據(jù)需要調(diào)整這些參數(shù)來(lái)滿足特定的濾波需求。
4 矩形窗的帶阻濾波器:
在Matlab中使用矩形窗設(shè)計(jì)帶阻濾波器可以通過(guò)fir1函數(shù)結(jié)合矩形窗來(lái)實(shí)現(xiàn)。帶阻濾波器是一種可以通過(guò)矩形窗設(shè)計(jì)的濾波器類型,用于去除特定頻率范圍內(nèi)的信號(hào)。
以下是一個(gè)示例代碼,演示如何在Matlab中使用矩形窗設(shè)計(jì)帶阻濾波器:
% 定義濾波器參數(shù) fs = 1000; % 采樣頻率 f1 = 50; % 帶阻頻率下限 f2 = 200; % 帶阻頻率上限 filterOrder = 100; % 濾波器階數(shù) % 計(jì)算歸一化的帶阻頻率范圍 nyquistFreq = fs/2; normalizedStopbandFreq = [f1 f2] / nyquistFreq; % 設(shè)計(jì)矩形窗帶阻濾波器 b = fir1(filterOrder, normalizedStopbandFreq, 'stop', rectwin(filterOrder+1)); % 繪制頻率響應(yīng) freqz(b, 1, 1024, fs);
在上述示例中,我們首先定義了濾波器的采樣頻率、帶阻頻率范圍和階數(shù)。然后,使用fir1函數(shù)通過(guò)指定矩形窗來(lái)設(shè)計(jì)帶阻濾波器,并繪制了濾波器的頻率響應(yīng)。
這段代碼生成了一個(gè)矩形窗帶阻濾波器,其階數(shù)為100,帶阻頻率范圍為50Hz到200Hz,采樣頻率為1000Hz。可以根據(jù)需要調(diào)整這些參數(shù)來(lái)滿足特定的濾波需求。
5 四種窗設(shè)計(jì)濾波器對(duì)比
下面是一個(gè)示例代碼,展示如何使用Matlab實(shí)現(xiàn)漢明窗濾波器、漢寧窗濾波器、布萊克曼窗濾波器和矩形窗濾波器,然后對(duì)它們進(jìn)行對(duì)比:
% 生成輸入信號(hào) fs = 1000; % 采樣頻率 t = 0:1/fs:1-1/fs; % 時(shí)間向量 f1 = 50; % 信號(hào)頻率 f2 = 150; % 噪聲頻率 x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 輸入信號(hào) % 設(shè)計(jì)濾波器 filterOrder = 50; % 濾波器階數(shù) cutOffFreq = 100; % 截止頻率 h_hamming = fir1(filterOrder, cutOffFreq/fs, 'low', hamming(filterOrder+1)); h_hann = fir1(filterOrder, cutOffFreq/fs, 'low', hann(filterOrder+1)); h_blackman = fir1(filterOrder, cutOffFreq/fs, 'low', blackman(filterOrder+1)); h_rect = fir1(filterOrder, cutOffFreq/fs, 'low', rectwin(filterOrder+1)); % 應(yīng)用濾波器 y_hamming = filter(h_hamming, 1, x); y_hann = filter(h_hann, 1, x); y_blackman = filter(h_blackman, 1, x); y_rect = filter(h_rect, 1, x); % 繪制頻率響應(yīng) freqz(h_hamming, 1, 1024, fs, 'red', 'hamming'); hold on; freqz(h_hann, 1, 1024, fs, 'blue', 'hanning'); freqz(h_blackman, 1, 1024, fs, 'green', 'blackman'); freqz(h_rect, 1, 1024, fs, 'magenta', 'rectwin'); legend('Hamming', 'Hanning', 'Blackman', 'Rectwin'); % 繪制原始信號(hào)和濾波后的信號(hào) figure; subplot(2,1,1); plot(t, x); title('原始信號(hào)'); subplot(2,1,2); plot(t, y_hamming, 'r', t, y_hann, 'b', t, y_blackman, 'g', t, y_rect, 'm'); legend('Hamming', 'Hanning', 'Blackman', 'Rectwin'); title('濾波后的信號(hào)');
上述代碼中,首先生成了一個(gè)包含信號(hào)和噪聲的輸入信號(hào)。然后使用fir1函數(shù)結(jié)合漢明窗、漢寧窗、布萊克曼窗和矩形窗設(shè)計(jì)了4個(gè)低通濾波器。接著,將這4個(gè)濾波器應(yīng)用于輸入信號(hào),并繪制了它們的頻率響應(yīng)。最后,繪制了原始信號(hào)和濾波后的信號(hào)作對(duì)比。
你可以根據(jù)需要調(diào)整濾波器的參數(shù)和頻率范圍,來(lái)滿足你具體的濾波需求。
審核編輯:劉清
-
matlab
+關(guān)注
關(guān)注
189文章
3003瀏覽量
234310 -
低通濾波器
+關(guān)注
關(guān)注
14文章
496瀏覽量
48267 -
頻率響應(yīng)
+關(guān)注
關(guān)注
1文章
103瀏覽量
18610 -
帶阻濾波器
+關(guān)注
關(guān)注
0文章
31瀏覽量
10198
原文標(biāo)題:matlab實(shí)現(xiàn)不同窗濾波器示例
文章出處:【微信號(hào):leezym0317,微信公眾號(hào):FPGA開(kāi)源工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用DDS生成三個(gè)信號(hào)并在Vivado中實(shí)現(xiàn)低通濾波器

低通濾波器的FPGA設(shè)計(jì)及仿真
低通濾波器設(shè)計(jì)

有源濾波器中數(shù)字低通濾波器的設(shè)計(jì)及其DSP實(shí)現(xiàn)
基于MATLAB設(shè)計(jì)巴特沃斯低通濾波器
基于MATLAB及FPGA的FIR低通濾波器的設(shè)計(jì)

數(shù)字低通濾波器的設(shè)計(jì)

基于MATLAB的理想低通濾波器的設(shè)計(jì)

低通濾波器的設(shè)計(jì)與實(shí)現(xiàn)

Matlab低通濾波器設(shè)定與實(shí)踐

低通濾波器與匹配濾波器的區(qū)別
低通濾波器與高通濾波器有什么不同

高通濾波器和低通濾波器的關(guān)系
什么是低通濾波器?低通濾波器有什么作用?

評(píng)論