0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Matlab中实现不同窗低通滤波器的设计?

FPGA开源工作室 来源:FPGA开源工作室 2024-02-27 14: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。可以根据需要调整这些参数来满足特定的滤波需求。

482671e6-d523-11ee-a297-92fbcf53809c.png

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。可以根据需要调整这些参数来满足特定的滤波需求。

482ba31e-d523-11ee-a297-92fbcf53809c.png

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。可以根据需要调整这些参数来满足特定的滤波需求。

4836b56a-d523-11ee-a297-92fbcf53809c.png

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。可以根据需要调整这些参数来满足特定的滤波需求。

483a9c8e-d523-11ee-a297-92fbcf53809c.png

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个滤波器应用于输入信号,并绘制了它们的频率响应。最后,绘制了原始信号和滤波后的信号作对比。

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

48415146-d523-11ee-a297-92fbcf53809c.png



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2924

    浏览量

    228444
  • 低通滤波器
    +关注

    关注

    13

    文章

    448

    浏览量

    46925
  • 频率响应
    +关注

    关注

    1

    文章

    88

    浏览量

    18224
  • 带阻滤波器
    +关注

    关注

    0

    文章

    22

    浏览量

    9963

原文标题:matlab实现不同窗滤波器示例

文章出处:【微信号:leezym0317,微信公众号:FPGA开源工作室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    低通滤波器如何设计?

    kHz 比音频信号带宽20~20kHz 大得多 为了从 PWM 开关信号恢复出音频信号 通常采用低通滤波器 LPF 低通滤波器频率特性如图 1所示图 2 与图 3 为 PWM 滤波
    发表于 11-07 14:46

    低通滤波器的FPGA设计及仿真

    主要任务:1.熟悉低通滤波器的原理及应用2.熟悉FPGA的硬件描述3.FPGA如何实现小数分频4.用MATLAB低通滤波器的验证预期成果
    发表于 04-04 22:16

    FPGA怎样调用IP核实现FIR低通滤波器设计?

    刚接触FPGA,想用EP4CE6F17C8这个型号的altera芯片实现低通滤波器设计,我看能直接调用IP实现,但是网上的资料都是调用MATLAB生成
    发表于 08-04 19:25

    低通滤波器是否可以在MCU实现

    你好, 我在我的应用中使用STM8S208MB MCU,需要在模拟输入上设计500 Hz的低通滤波器。有没有人使用MCU设计和实现这种LPF。我需要第一或第二顺序的过滤器。是否可以在MCU
    发表于 01-18 12:58

    如何利用MATLAB设计用于谐波检测的数字低通滤波器

    波电流,使流入电网的电流全是有功分量,因此无功和谐波电流的实时检测就成为实时补偿的关键。而谐波及无功电流的检测实质就是低通滤波器的设计。那么我们该如何利用MATLAB设计用于谐波检测的数字
    发表于 08-06 08:32

    低通滤波器设计

    低通滤波器设计内容有:低通滤波器的基本电路和方程,低通勃脱华滤波器,二阶低通勃脱华斯滤波器,低通契比雪夫滤波器等内容。
    发表于 12-01 12:39 75次下载
    <b class='flag-5'>低通滤波器</b>设计

    有源滤波器中数字低通滤波器的设计及其DSP实现

    有源滤波器中数字低通滤波器的设计及其DSP实现摘要:介绍了基于瞬时无功功率理论的ip iq 谐波检测方法及对低通滤波器的要求,分析讨论了数字低通滤波
    发表于 05-13 17:19 90次下载

    基于MATLAB设计巴特沃斯低通滤波器

    基于MATLAB设计巴特沃斯低通滤波器摘 要: 首先分析了巴特沃斯低通滤波器的特性。然后用MATLAB的信号处理工具箱提供的函数设计了巴特沃斯低通滤
    发表于 05-14 13:31 134次下载

    基于MATLAB及FPGA的FIR低通滤波器的设计

    充分利用有限冲击响应数字滤波器(Finite Impulse Response digital filter ,FIR)系数的对称特性,借助于MATLAB语言和现场可编程门阵列(FPGA)实现了一种高效的
    发表于 08-05 14:23 82次下载
    基于<b class='flag-5'>MATLAB</b>及FPGA的FIR<b class='flag-5'>低通滤波器</b>的设计

    数字低通滤波器的设计

    本文主要介绍了数字低通滤波器的设计,数字滤波器有无限冲激响应(IIR)系统和有限冲激响应(FIR)系统两种。利用MATLAB设计IIR滤波器,设计过程简单、直接,大大缩减了设计开发的时
    发表于 01-14 15:16 1.8w次阅读
    数字<b class='flag-5'>低通滤波器</b>的设计

    基于MATLAB的理想低通滤波器的设计

    低通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的作用;低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器
    发表于 01-26 13:34 3.5w次阅读
    基于<b class='flag-5'>MATLAB</b>的理想<b class='flag-5'>低通滤波器</b>的设计

    低通滤波器的设计与实现

    低通滤波器的设计是已知ow(dB3-截止频率 )、LPH0(直流增益 )、Q(在dB3-截止频率时的电压放大倍数与通带放大倍数数值之比)三个参数来设计电路,可选的电路形式为压控电压源低通滤波器和无限增益多路反馈低通滤波器。下面分
    发表于 04-22 09:23 67次下载
    <b class='flag-5'>低通滤波器</b>的设计与<b class='flag-5'>实现</b>

    Matlab低通滤波器设定与实践

    Matlab数字滤波器设计实践—FIR 1低通滤波器设定 在理想情况下,低通滤波器使信号中低于指定截止频率 ωc 的所有频率分量保持不变,并拒绝高于 ωc 的所有分量。由于
    的头像 发表于 08-16 11:10 1.4w次阅读
    <b class='flag-5'>Matlab</b><b class='flag-5'>低通滤波器</b>设定与实践

    高通滤波器低通滤波器的关系

    高通滤波器低通滤波器是互补的,它们可以组合使用,从而实现更复杂的滤波功能。例如,可以将高通滤波器低通
    发表于 02-17 17:47 3502次阅读

    低通滤波器传递函数 低通滤波器原理

    原理 低通滤波器的原理基于频率的截断。它通过将高频信号成分削弱或滤除,从而实现对低频信号的传递。具体来说,低通滤波器使得输入信号中高于截止频率的成分被抑制或消除,并保留低于截止频率的成分。在实际应用中,
    的头像 发表于 01-30 10:23 1304次阅读