巴特沃斯滤波器matlab代码,MATLAB实现巴特沃斯数字滤波器
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实现巴特沃斯数字滤波器相关推荐
- 机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三)
机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三) 代码 数据 结果 代码 代码按照下列顺序依次: 1. function result(true_value,pr ...
- 设计一个三阶巴特沃斯滤波器_二、三阶巴特沃斯滤波器电路设计—电路精选(47)...
巴特沃斯滤波器是电子滤波器的一种.这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国<无线电工程>期刊的一篇论文中提出的.巴特沃斯滤 ...
- 变步长龙格库塔法matlab代码,matlab 龙格库塔法 变步长龙格库塔法.doc
河北科技大学硕士学位研究生 2012--2013学年第二学期 <Matlab语言及应用>结课论文 学 院: 信息科学与工程学院 专 业: 电路与系统 姓 名: 张利超 学 号: S2012 ...
- 变步长龙格库塔法matlab代码,matlab龙格库塔法变步长龙格库塔法.doc
河北科技大学硕士学位研究生 2012--2013学年第二学期 <Matlab语言及应用>结课论文 学 院:信息科学与工程学院专 业:电路与系统姓 名:张利超学 号:S2012014011 ...
- 人工神经网络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 ...
- 形态学滤波 matlab代码,matlab形态学滤波
对经拉普拉斯算子滤波后的 图像用零灰度值进行二值化会产生闭合的.连通 的轮廓...形态学图像处理 术语 ? 1. 集合论术语(Definition) 形态学处理语言中,二值...... 对此 ,采用平 ...
- 最大流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 ...
- 粗糙集matlab代码,matlab的粗糙集代码
[实例简介] 关于粗糙集的matlab程序代码,供大家交流学习使用 [实例截图] [核心代码] 0c70880c-487a-4dbc-9412-435a0cfe4b22 └── Matlab code ...
- 极限环的matlab代码,matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程
问题二:用向前欧拉公式和改进的欧拉公式求方程 y '=y -2x /y , y (0)=1的数值解(0≤x ≤1 , h =0.1) 要求编写程序. 问题三:Rossler 微分方程组 当固定参数b= ...
最新文章
- mysql 运算符 =,:=,@,@@的含义
- 根据XML配置规则导入Excel数据(⑥)ExcelAble 标记接口
- 使用Apache Flume抓取数据(1)
- WCF-004:WCF中也可以使用Microsoft.Practices.EnterpriseLibrary
- 想起温习一下JS中的this apply call arguments
- 加密选项_Zoom终于为免费账户也提供了端到端通讯加密的选项
- python在字符串结尾加反斜杠_Python原始字符串和尾部反斜杠
- 在线语音识别_腾讯云在线语音识别_在线语音识别成文字 - 云+社区 - 腾讯云
- pic单片机c语言多路模拟量输入,pic单片机多路ad切换程序介绍
- MSN退休,寻找微软如何融合MSN的答案:体验skype6国际版MSN功能。
- 内置式永磁同步电机IPMSM,基于虚拟信号注入法最大转矩电流比MTPA控制仿真模型
- NXP IMX6ULL芯片时钟系统全概况
- Ubuntu安装百度官方网盘客户端
- 一看就懂系列:什么是相速度与群速度
- CAD2019的使用
- 【干货】github上十二款最著名的Android播放器开源项目
- idou老师教你学istio :基于角色的访问控制
- backtrack5实现局域网DNS欺骗
- 黑龙江第三方软件测试机构 CMA/CNAS双资质
- 模拟退火算法(数学建模清风)