matlab实现不同窗滤波器示例

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scrapy与分布式开发:框架原生去重机制源码解析与不足分析

框架原生去重机制源码解析与不足分析 导语 在网络爬虫和数据采集领域,去重机制是一个至关重要的环节。随着互联网的迅速发展,数据量呈爆炸式增长,如何在海量数据中高效地筛选出有价值且唯一的信息,成为了一个亟待解决的问题。去重机制正是为了解决这一问题而诞生的。 Sc…

docker中hyperf项目配置虚拟域名

在使用hyperf框架时,直接用了docker环境进行开发 下载镜像运行容器 docker run --name hyperf -v /data/project:/data/project -p 9501:9501 -itd -w /data/project --privileged -u root --entrypoint /bin/sh 镜像ID配置docker-compose.yml version: "3.…

东崎仪表案例-中国新能源汽车产业全面崛起

以下部分数据信息来源:澎湃新闻 1月9日,韩国研究机构SNE Research公布了全球动力电池市场的新一轮统计数据。2023年1—11月,全球登记的电动汽车(EV、PHEV、HEV)电池装车量约为624.4GWh,比2022年同期增长41.…

Qt SQLite的创建和使用

重点: 1.SQLite创建数据库内容方法 链接:SQLite Expert Personal的简单使用-CSDN博客 2.和数据库进行链接方法 QSqlDatabase DB; //数据库连接bool MainWindow::openDatabase(QString aFile) {DBQSqlDatabase::addDatabase("QSQLITE"); /…

高刷显示器 - HKC VG253KM

🔥🔥 今天来给大家揭秘一款电竞神器 - HKC VG253KM 高刷电竞显示器!这款显示器可是有着雄鹰展翅般的设计灵感,背后的大鹏展翅鹰翼图腾让人过目难忘。那么,这款显示器到底有哪些过人之处呢?一起来看看吧&…

vue中使用prettier

前言:prettier是一款有态度的代码格式化工具,它可以集成在IDE中,如VS Code、Web Storm等,也可以安装到我们开发的项目里面。本文主要讲解在Vue中集成prettier的过程,可以便于代码检测和格式化。 prettier官网 从官网的…

使用MyBatisPlus实现向数据库中存储List类型的数据

使用MyBatisPlus实现向数据库中存储List类型的数据 问题描述 建表时,表中的这五个字段为json类型 但是在入库的时候既不能写入数据,也不能查询出数据。 解决方案: 1.首先明确,数据存入的时候是经过了数据类型转化&#xff0c…

ElementUI修改el-tab-pane自定义动态添加class并修改组件样式

参考:ElementUI修改el-tab-pane自定义添加class并修改组件样式_el-tab-pane更换样式-CSDN博客 需求:tab 列表 动态添加class 标识当前版本 1:在调用列表接口的接口里面 初始化调用handleClick()方法 2:tab 点击时 再调用一下…

Mysql索引3--索引优化规则

目录 1、索引失效场景 1、1、不遵循最左前缀法则 ,导致索引失效 1、2、范围查询 ,导致失效 1、3 索引列进行运算,导致失效 ​1、4字符串不加引号,到账失效 1、5头部模糊匹配,导致失效 1、6 or连接条件只有一个有…

10分钟SkyWalking与SpringBoot融合并整合到Linux中

1.依赖配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>org.springframe…

CV论文--2024.2.29

1、ShapeLLM: Universal 3D Object Understanding for Embodied Interaction 中文标题&#xff1a;ShapeLLM: 用于具身交互的通用三维物体理解 简介&#xff1a;这篇论文介绍了ShapeLLM&#xff0c;它是专为具体交互设计的首个三维多模态大语言模型&#xff08;LLM&#xff09…

Galaxy基础教程:从列表集合中提取元素标识符

如何从一个列表集合中提取元素标识符&#xff1f; 解决方案 网站&#xff1a;UseGalaxy.CN 工具&#xff1a; Extract element identifiers of a list collection (Galaxy Version 0.0.2) Dataset collection *: 列表集合 讨论 该工具接受一个列表类型的集合作为输入&#xff0…

11.以太网交换机工作原理

目录 一、以太网协议二、以太网交换机原理三、交换机常见问题思考四、同网段数据通信全过程五、跨网段数据通信全过程六、关键知识七、调试命令 前言&#xff1a;在网络中传输数据时需要遵循一些标准&#xff0c;以太网协议定义了数据帧在以太网上的传输标准&#xff0c;了解以…

猜猜心里数字(个人学习笔记黑马学习)

1.定义一个变量&#xff0c;数字类型&#xff0c;内容随意 2.基于input语句输入猜想的数字&#xff0c;通过if和多次elif的组合&#xff0c;判断猜想数字是否和心里数字一致 num5if int(input("请输入第一次猜想的数字&#xff1a;"))5:print("猜对了&#xff0…

JavaEE:多线程(3):案例代码

目录 案例一&#xff1a;单例模式 饿汉模式 懒汉模式 思考&#xff1a;懒汉模式是否线程安全&#xff1f; 案例二&#xff1a;阻塞队列 可以实现生产者消费者模型 削峰填谷 接下来我们自己实现一个阻塞队列 1.先实现一个循环队列 2. 引入锁&#xff0c;实现线程安全 …

mysql修改字段的长度锁表问题

mysql修改字段的长度锁表问题 背景 MySQL&#xff08;这里指5.6及其后续版本&#xff09;修改字段的长度锁表会锁表吗&#xff1f;答案是可能会但不一定会 具体原理 MySQL 5.6 及以后版本扩大字段长度 支持 online ddl in-place 模式&#xff0c;而这将不会锁表。varchar 表示…

SpringBoot神来一言管理系统

介绍 神来一言管理系统是一款汇总和记录生活中自己无意间说出的一句有意思的话或他人说出的一句有意思的话。 使用技术 SpringBootMyBatisPlusThymeleafMySQL 项目结构 功能介绍 登录 首页 一言管理 详情 分类管理 源码下载 链接: https://pan.baidu.com/s/14FkhiJJlXM4N…

江苏专转本复习几轮比较好?

大一、大二 江苏专转本备考复习 到现在你复习了几轮&#xff1f; 复习几轮最靠谱呢&#xff1f; 据调查统计&#xff1a;专转本17%的考生复习三轮及以上&#xff0c;23%的考生复习了两轮。这两类的考生录取率高至85%。 可见复习轮数多&#xff0c;专转本上岸的概率也大。综…

人工智能水印技术入门:工具与技巧

近几个月来&#xff0c;我们看到了多起关于“深度伪造 (deepfakes)”或人工智能生成内容的新闻报道&#xff1a;从 泰勒斯威夫特的图片、汤姆汉克斯的视频 到 美国总统乔拜登的录音。这些深度伪造内容被用于各种目的&#xff0c;如销售产品、未经授权操纵人物形象、钓鱼获取私人…

SpringCloud微服务-Nacos配置管理

Nacos配置管理 文章目录 Nacos配置管理1、统一配置管理具体步骤 2、配置自动刷新&#xff08;热更新&#xff09;3、多环境配置共享3.1、添加一个环境共享配置3.2、在user-service中读取共享配置3.3、编写接口测试3.4、运行两个User Application &#xff0c;使用不同的profile…