MATLAB实现巴特沃斯数字滤波器

前因:因为要准备保研面试,今年暑假就重新把烂尾的项目捡起来了。

为了提取采集到的脑电信号中有用的部分,想用数字带通滤波器实现,浏览了很多帖子。要不是只有代码,没有注释;要不就是只有理论,没有代码。索性自己写一篇,方便回顾。

1. 用↓观察频谱

f=fftshift(fft(b)); %b表示信号值data

w=linspace(-512/2,512/2,length(b)); %根据奈奎斯特采样定理,512/2为最大频率

plot(w,abs(f)); %Hz为单位

k、Hz等纵坐标如何判断(5.同理)

2. 频率转化

Fs=512

fp=0.5Hz - 50Hz

fs=0.25Hz - 55Hz

///

*Q:↑为何如此取值

A:为防止频谱泄露,滤波器并非完全垂直截止,需过渡衰减

回归正题,然后将单位为‘Hz’的模拟频率转化为单位为‘rad’的数字角频率

基础知识见本连接

(wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值。要求:0≤wp≤1,0≤ws≤1。

1表示数字频率pi。)

Fs=512;

wp=[0.5*2*pi/Fs,50*2*pi/Fs]; %设置通带数字角频率

ws=[0.25*2*pi/Fs,55*2*pi/Fs]; %设置阻带数字角频率

再设置参数

Rp=1; %通带最大衰减

Rs=30; %阻带最小衰减

*为何如此取值见 ↓

3. 巴特沃斯滤波器设计

[N,Wn]=buttord(wp,ws,Rp,Rs,'s'); %求巴特沃斯滤波器阶数N和截止频率Wn

%无论是高通、带通和带阻滤波器,在设计中最终都等效于一个截止频率为Wn的低通滤波器(我现在也不是很理解为啥是这样,毕竟我也是刚接触滤波器)

fprintf('巴特沃斯滤波器 N= %4d

',N); %显示滤波器阶数

[bb,ab]=butter(N,Wn,'s'); %求巴特沃斯滤波器系数,即求传输函数的分子和分母的系数向量

b2=filter(bb,ab,b); %filter既能进行IIR滤波又能进行FIR滤波

分子分母系数如何排列

*阶数N越大,变化越剧烈

*Wn是指低频、高频信号功率降低至 最大值的0.707倍(-3dB)或0.5倍的点(-6dB),即上下限截止频率 ↓

4. 观察滤波器频率响应

W=-600:0.1:600; %设置模拟频率

[Hb,wb]=freqz(bb,ab,W,Fs); %求巴特沃斯滤波器频率响应

plot(wb,20*log10(abs(Hb)),'b'); %作图

xlabel('Hz');

ylabel('幅值/dB');

所画频谱不正确,未明白fft()和fftshift(fft())的区别

*值得一提的是

freqs(b,a,w)是针对模拟滤波器求频率响应,输入信号w的单位为rad/s

freqz()是针对数字滤波器,当freqz(…,N,Fs)时,输入信号w的单位为fs

5. 观察滤波后信号频谱

f=fft(b2); %b2是滤波后信号

w=linspace(-512/2,512/2,length(b2)); %根据奈奎斯特采样定理,512/2为最大频率

plot(w,abs(f));

最后

附上可以参考的实验

实验

巴特沃斯滤波器matlab代码,MATLAB实现巴特沃斯数字滤波器相关推荐

  1. 机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三)

    机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三) 代码 数据 结果 代码 代码按照下列顺序依次: 1. function result(true_value,pr ...

  2. 设计一个三阶巴特沃斯滤波器_二、三阶巴特沃斯滤波器电路设计—电路精选(47)...

    巴特沃斯滤波器是电子滤波器的一种.这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国<无线电工程>期刊的一篇论文中提出的.巴特沃斯滤 ...

  3. 变步长龙格库塔法matlab代码,matlab 龙格库塔法 变步长龙格库塔法.doc

    河北科技大学硕士学位研究生 2012--2013学年第二学期 <Matlab语言及应用>结课论文 学 院: 信息科学与工程学院 专 业: 电路与系统 姓 名: 张利超 学 号: S2012 ...

  4. 变步长龙格库塔法matlab代码,matlab龙格库塔法变步长龙格库塔法.doc

    河北科技大学硕士学位研究生 2012--2013学年第二学期 <Matlab语言及应用>结课论文 学 院:信息科学与工程学院专 业:电路与系统姓 名:张利超学 号:S2012014011 ...

  5. 人工神经网络matlab代码,matlab神经网络30例代码

    如何在matlab中建立多层bp神经网络 当你用newff的时候,里面有一个参数可以控制层数,比如说:P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 ...

  6. 形态学滤波 matlab代码,matlab形态学滤波

    对经拉普拉斯算子滤波后的 图像用零灰度值进行二值化会产生闭合的.连通 的轮廓...形态学图像处理 术语 ? 1. 集合论术语(Definition) 形态学处理语言中,二值...... 对此 ,采用平 ...

  7. 最大流matlab代码,matlab求最大流问题

    如下图,我的代码只能求指定两点的最大流,例如V1到V6,列出邻接矩阵C=[0 1 0 1 0 0,1 0 1 0 1 0,0 1 0 1 0 1,1 0 1 0 1 0,0 1 0 1 0 1,0 0 ...

  8. 粗糙集matlab代码,matlab的粗糙集代码

    [实例简介] 关于粗糙集的matlab程序代码,供大家交流学习使用 [实例截图] [核心代码] 0c70880c-487a-4dbc-9412-435a0cfe4b22 └── Matlab code ...

  9. 极限环的matlab代码,matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程

    问题二:用向前欧拉公式和改进的欧拉公式求方程 y '=y -2x /y , y (0)=1的数值解(0≤x ≤1 , h =0.1) 要求编写程序. 问题三:Rossler 微分方程组 当固定参数b= ...

最新文章

  1. mysql 运算符 =,:=,@,@@的含义
  2. 根据XML配置规则导入Excel数据(⑥)ExcelAble 标记接口
  3. 使用Apache Flume抓取数据(1)
  4. WCF-004:WCF中也可以使用Microsoft.Practices.EnterpriseLibrary
  5. 想起温习一下JS中的this apply call arguments
  6. 加密选项_Zoom终于为免费账户也提供了端到端通讯加密的选项
  7. python在字符串结尾加反斜杠_Python原始字符串和尾部反斜杠
  8. 在线语音识别_腾讯云在线语音识别_在线语音识别成文字 - 云+社区 - 腾讯云
  9. pic单片机c语言多路模拟量输入,pic单片机多路ad切换程序介绍
  10. MSN退休,寻找微软如何融合MSN的答案:体验skype6国际版MSN功能。
  11. 内置式永磁同步电机IPMSM,基于虚拟信号注入法最大转矩电流比MTPA控制仿真模型
  12. NXP IMX6ULL芯片时钟系统全概况
  13. Ubuntu安装百度官方网盘客户端
  14. 一看就懂系列:什么是相速度与群速度
  15. CAD2019的使用
  16. 【干货】github上十二款最著名的Android播放器开源项目
  17. idou老师教你学istio :基于角色的访问控制
  18. backtrack5实现局域网DNS欺骗
  19. 黑龙江第三方软件测试机构 CMA/CNAS双资质
  20. 模拟退火算法(数学建模清风)

热门文章

  1. TOM企业邮箱教您如何提升邮箱密码安全
  2. 建网站建设的目的是什么?为什么要建网站建设?
  3. 迅雷看看网站设计分析
  4. 计算机网络原理的一点东西
  5. 使用VS2022发布后端接口,创建本地IIS服务器,并且能通过外网能访问到你的端口
  6. 亚马逊封号潮暂停,部分账号开始解封,亚马逊防关联到底要怎么做
  7. Android版中文分词器:原理、接入和启动优化
  8. 《华林科纳-半导体工艺》颗粒清洗技术
  9. 红米融合位置服务器,红米Redmi 10X几个颜色 Redmi 10X Pro测评
  10. JavaSE——为什么重写equals的同时一定要重写hashCode?