matlab实现不同窗滤波器示例

news2025/2/24 11:32:28

41fd4fcb8247c3c8dbd0f69b71961385.png

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。可以根据需要调整这些参数来满足特定的滤波需求。
fb6f81bdd1a1be6f6822557e88bf7527.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。可以根据需要调整这些参数来满足特定的滤波需求。
6eb1964cc1895b6e4fd0ba39dc9a265f.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。可以根据需要调整这些参数来满足特定的滤波需求。
5fb93b582f7f7b68e803c1bfc810c8d7.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。可以根据需要调整这些参数来满足特定的滤波需求。
25f89280c39a8fd6243a9f93e73b8ef7.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个滤波器应用于输入信号,并绘制了它们的频率响应。最后,绘制了原始信号和滤波后的信号作对比。

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

0b75c734d1ea083fbdfe9352db3b97bd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构——lesson4带头双向循环链表实现

前言✨✨ 💥个人主页:大耳朵土土垚-CSDN博客 💥 所属专栏:数据结构学习笔记​​​​​​ 💥双链表与单链表的区分:单链表介绍与实现 💥对于malloc函数有疑问的:动态内存函数介绍 感谢大家的观看…

J1—Vivado调试技巧VIO IP

1.简介 VIO(Virtual Input/Output)IP核是一种用于FPGA设计的IP核,它可以模拟输入/输出设备的功能,如键盘、鼠标、显示器等。VIO IP核可以在FPGA设计中用于调试和验证,帮助工程师快速定位问题并进行调试。如图所示&…

vue 解决:点击左侧相同菜单,右侧页面不重新加载的问题

1、问题描述: 其一、需求为: 无论是通过路由组件形成的平台管理系统,还是通过文件配置形成的平台管理系统,都存在通过切换左侧的导航栏而使右侧的页面切换的业务需求; 其二、问题描述为: A、步骤一&#…

全国产飞腾E2000Q +复旦微FPGA的轨道交通、电力解决方案

产品概述 ITX-XMF201是一款高性能边缘计算网关主板,采用飞腾E2000Q 4核处理器,国产化率达到95%国产化。 板载2电口,2路CAN,6路RS232接口,1路RS485接口,16路GPIO,可以满足银行、轨道交通、电力等…

springboot2入门到实战 - JWT

JWT是什么? JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object。 This information can be verified and trusted because it is digi…

便签软件哪个好用?好用便签怎么设置提醒?

在当今信息爆炸的时代,便签软件成为了人们生活中不可或缺的工具之一。那么,便签软件哪个好用呢?下面为您推荐几款备受好评的便签软件。首先是知名度极高的好用便签,它拥有强大的笔记功能、提醒功能和多端同步,让您随时…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低,原来是PHP7.0 composer要求至少7.4 直接修改环境变量,把PHP目录切换到7.4 composer升级比较简单,在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…

Java进阶-集合(3)与泛型

这次介绍集合中的Iterator迭代器,以及泛型。简单来说,泛型对集合的元素类型进行了限制,使用泛型可以在编译时检查类型安全,提高代码的重用率。内容如下 一、Iterator迭代器 1、概念 Iterator迭代器是一个接口,作用…

MATLAB环境下脑电信号EEG的谱分析

脑电信号一直伴随着人类的生命,脑电波是脑神经细胞发生新陈代谢、离子交换时细胞群兴奋突触电位总和,脑电信号的节律性则和丘脑相关,含有丰富的大脑活动信息。通常我们所接触的脑电图都是头皮脑电图,在有些特殊场合还需要皮下部位…

TikTok网络相关问题详解来了,附原生住宅代理IP供应商推荐,

想要迈过TikTok新手门槛,首先必须要学习的就是网络问题。很多人开始做TikTok账号或者TikTok小店时,都会遇到一些先前没有遇到的词汇和概念,比如原生IP,独享IP,甚至专线,那么一个IP可以做几个账号呢&#xf…

0粉低成本带货!职人号矩阵正成为商家的香饽饽

近年来,中国消费市场变化不断,线上消费持续上涨,线上线下一体化成为零售行业的发展新趋势。 加上抖音等平台都在大力发展本地生活,众多连锁商家、本地商家、百货商场纷纷加快数字化转型步伐,掘金线上海量流量&#xff…

机器学习:原理、应用与未来展望

第一章 是什么 机器学习(Machine Learning)是一门跨学科的学科,它使用计算机模拟或实现人类学习行为,通过不断地获取新的知识和技能,重新组织已有的知识结构,从而提高自身的性能。机器学习涉及多个学科&am…

HGAME 2024 WEEK4 WP

文章目录 IOTez7621 MISCezKeyboardMaybezip**Mondrians 🔑 REchange webReverse and Escalation. 想念21和22年的平台和week4的 6557225了 IOT ez7621 拿到固件直接binwalk解,之后grep出hgame 在usr/lib/opkg/info/kmod-flag.control找到这个&#x…

Quartz 任务调度框架源码阅读解析

概念: quartz 是一个基于JAVA的定时任务调度框架 案例: <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version></dependency>JobDetail job JobBuilder.newJob(Sc…

TP6上传图片到OSS(记录贴)

1&#xff0c;先安装&#xff0c;我使用composer安装 在项目的根目录运行composer require aliyuncs/oss-sdk-php 2,安装成功以后vendor目录下可以看到如图&#xff1a; 3&#xff0c;上传图片代码如下&#xff1a; <?php namespace app\controller;use app\BaseControll…

宝塔FTP服务设置并结合cpolar内网穿透实现远程传输文件

文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能&#xff0c;用于设置和管理FTP服务。通过宝塔FTP&#xff0c;用户可以创建FTP账号&#xff0c;配置FTP用户权限…

D*算法超详解 (D星算法 / Dynamic A*算法/ Dstar算法)(死循环解决--跟其他资料不一样奥)

所需先验知识&#xff08;没有先验知识可能会有大碍&#xff0c;了解的话会对D*的理解有帮助&#xff09;&#xff1a;A*算法/ Dijkstra算法 何为D*算法 Dijkstra算法是无启发的寻找图中两节点的最短连接路径的算法&#xff0c;A*算法则是在Dijkstra算法的基础上加入了启发函数…

数据抽取平台pydatax介绍--实现和项目使用

数据抽取平台pydatax实现过程中&#xff0c;有2个关键点&#xff1a; 1、是否能在python3中调用执行datax任务&#xff0c;自己测试了一下可以&#xff0c;代码如下&#xff1a; 这个str1就是配置的shell文件 try:result os.popen(str1).read() except Exception as …

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇&#xff0c;第三篇笔记请见&#xff1a; 吴恩达机器学习全课程笔记第…

ubuntu20.04 ROS-Noetic 配置qtcreator的ROS环境

文章目录 1 安装qtcreator1.1 下载安装Qt1.2 配置命令启动qtcreator2 配置ROS2.1 直接安装qtcreator-ros2.2 在qtcreator上安装ros_qtc_plugin插件3 注意3.1 构建套件3.2 更新、删除qt4 参考链接1 安装qtcreator QT官网:Qt Downloads 下载包链接:qt5.12.12 Qt5.12.12默认qtc…