加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

matlab实现不同窗滤波器示例

02/27 15:30
7011
阅读需 11 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 汉明窗低通滤波器 :

在Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。

下面是一个示例代码,演示如何在Matlab中使用汉明窗设计低通滤波器:

% 定义滤波器参数
fs = 1000; % 采样频率
cutOffFreq = 100; % 截止频率
filterOrder = 50; % 滤波器阶数

% 计算归一化的截止频率
nyquistFreq = fs/2;
normalizedCutoffFreq = cutOffFreq/nyquistFreq;

% 设计汉明窗滤波器
b = fir1(filterOrder, normalizedCutoffFreq, 'low', hamming(filterOrder+1));

% 绘制频率响应
freqz(b, 1, 1024, fs);

在上述示例中,我们首先定义了滤波器的采样频率、截止频率和阶数。然后,使用fir1函数通过指定汉明窗来设计低通滤波器,并绘制了滤波器的频率响应。

这段代码生成了一个汉明窗低通滤波器,其阶数为50,截止频率为100Hz,采样频率为1000Hz。可以根据需要调整这些参数来满足特定的滤波需求。

2 汉宁窗带通滤波器:

在Matlab中使用汉宁窗设计带通滤波器可以通过fir1函数结合汉宁窗来实现。汉宁窗是一种常用的窗函数,可以用于提高滤波器的频率响应特性。

以下是一个示例代码,演示如何在Matlab中使用汉宁窗设计带通滤波器:

% 定义滤波器参数
fs = 1000; % 采样频率
f1 = 50; % 通带下限频率
f2 = 200; % 通带上限频率
filterOrder = 50; % 滤波器阶数

% 计算归一化的通带频率
nyquistFreq = fs/2;
normalizedCutoffFreq = [f1 f2] / nyquistFreq;

% 设计汉宁窗带通滤波器
b = fir1(filterOrder, normalizedCutoffFreq, 'bandpass', hann(filterOrder+1));

% 绘制频率响应
freqz(b, 1, 1024, fs);

在上述示例中,我们首先定义了滤波器的采样频率、通带频率范围和阶数。然后,使用fir1函数通过指定汉宁窗来设计带通滤波器,并绘制了滤波器的频率响应。

这段代码生成了一个汉宁窗带通滤波器,其阶数为50,通带频率范围为50Hz到200Hz,采样频率为1000Hz。可以根据需要调整这些参数来满足特定的滤波需求。

3布莱克曼窗高通滤波器:

在Matlab中使用布莱克曼(Blackman)窗设计高通滤波器可以通过fir1函数结合布莱克曼窗来实现。

以下是一个示例代码,演示如何在Matlab中使用布莱克曼窗设计高通滤波器:

% 定义滤波器参数
fs = 1000; % 采样频率
cutOffFreq = 100; % 截止频率
filterOrder = 50; % 滤波器阶数

% 计算归一化的截止频率
nyquistFreq = fs/2;
normalizedCutoffFreq = cutOffFreq/nyquistFreq;

% 设计布莱克曼窗高通滤波器
b = fir1(filterOrder, normalizedCutoffFreq, 'high', blackman(filterOrder+1));

% 绘制频率响应
freqz(b, 1, 1024, fs);

在上面的示例中,我们首先定义了滤波器的采样频率、截止频率和阶数。然后,使用fir1函数通过指定布莱克曼窗来设计高通滤波器,并绘制了滤波器的频率响应。

这段代码生成了一个布莱克曼窗高通滤波器,其阶数为50,截止频率为100Hz,采样频率为1000Hz。可以根据需要调整这些参数来满足特定的滤波需求。

4矩形窗的带阻滤波器:

在Matlab中使用矩形窗设计带阻滤波器可以通过fir1函数结合矩形窗来实现。带阻滤波器是一种可以通过矩形窗设计的滤波器类型,用于去除特定频率范围内的信号。

以下是一个示例代码,演示如何在Matlab中使用矩形窗设计带阻滤波器:

% 定义滤波器参数
fs = 1000; % 采样频率
f1 = 50; % 带阻频率下限
f2 = 200; % 带阻频率上限
filterOrder = 100; % 滤波器阶数

% 计算归一化的带阻频率范围
nyquistFreq = fs/2;
normalizedStopbandFreq = [f1 f2] / nyquistFreq;

% 设计矩形窗带阻滤波器
b = fir1(filterOrder, normalizedStopbandFreq, 'stop', rectwin(filterOrder+1));

% 绘制频率响应
freqz(b, 1, 1024, fs);

在上述示例中,我们首先定义了滤波器的采样频率、带阻频率范围和阶数。然后,使用fir1函数通过指定矩形窗来设计带阻滤波器,并绘制了滤波器的频率响应。

这段代码生成了一个矩形窗带阻滤波器,其阶数为100,带阻频率范围为50Hz到200Hz,采样频率为1000Hz。可以根据需要调整这些参数来满足特定的滤波需求。

5 四种窗设计滤波器对比

下面是一个示例代码,展示如何使用Matlab实现汉明窗滤波器、汉宁窗滤波器、布莱克曼窗滤波器和矩形窗滤波器,然后对它们进行对比:

% 生成输入信号
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间向量
f1 = 50; % 信号频率
f2 = 150; % 噪声频率
x = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 输入信号

% 设计滤波器
filterOrder = 50; % 滤波器阶数
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_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);

% 绘制频率响应
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');

% 绘制原始信号和滤波后的信号
figure;
subplot(2,1,1);
plot(t, x);
title('原始信号');
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('滤波后的信号');

上述代码中,首先生成了一个包含信号和噪声的输入信号。然后使用fir1函数结合汉明窗、汉宁窗、布莱克曼窗和矩形窗设计了4个低通滤波器。接着,将这4个滤波器应用于输入信号,并绘制了它们的频率响应。最后,绘制了原始信号和滤波后的信号作对比。

你可以根据需要调整滤波器的参数和频率范围,来满足你具体的滤波需求。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
10M08SCU324C8G 1 Intel Corporation Field Programmable Gate Array,
$148.65 查看
EP4CE40F23C7N 1 Altera Corporation Field Programmable Gate Array, 2475 CLBs, 472.5MHz, 39600-Cell, PBGA484, 23 X 23 MM, 1 MM PITCH, LEAD FREE, FBGA-484
$640.28 查看
A3P600-FGG256I 1 Microsemi Corporation Field Programmable Gate Array, 13824 CLBs, 600000 Gates, 350MHz, CMOS, PBGA256, 17 X 17 MM, 1.60 MM HEIGHT, 1 MM PITCH, GREEN, FBGA-256
$49.64 查看

相关推荐

电子产业图谱

lee
lee

从数字出发,走进图像世界,聆听音频的美妙旋律。从电路出发,实现美妙的算法,展示代码的美奂。从知识到实现,欢迎大家关注公众号FPGA开源工作室。