加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

matlab實(shí)現(xiàn)不同窗濾波器示例

02/27 15:30
7070
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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ì)的濾波器類(lèi)型,用于去除特定頻率范圍內(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)滿足你具體的濾波需求。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
XC7A15T-2CSG324I 1 AMD Xilinx Field Programmable Gate Array, 1300 CLBs, PBGA324, BGA-324

ECAD模型

下載ECAD模型
$138.91 查看
M2S010-TQG144I 1 Microchip Technology Inc Field Programmable Gate Array, PQFP144
$35.76 查看
XC6SLX45-2CSG324C 1 AMD Xilinx Field Programmable Gate Array, 3411 CLBs, 667MHz, 43661-Cell, CMOS, PBGA324, 15 X 15 MM, 0.80 MM PITCH, LEAD FREE, BGA-324

ECAD模型

下載ECAD模型
$56.63 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

lee
lee

從數(shù)字出發(fā),走進(jìn)圖像世界,聆聽(tīng)音頻的美妙旋律。從電路出發(fā),實(shí)現(xiàn)美妙的算法,展示代碼的美奐。從知識(shí)到實(shí)現(xiàn),歡迎大家關(guān)注公眾號(hào)FPGA開(kāi)源工作室。