设计思路

这里采用间接法设计数字滤波器(先设计模拟滤波器再设计数字滤波器)

滤波器理解:
1.数字滤波器可以用H(z),h(n)or系统差分方程来表示,对应的就是一个系统,信号输入该系统即可改变其所含频率成分的相对比例。
2.理想滤波器为什么无法实现?解:因为理想滤波器非因果,输出会在输入前产生,物理没法实现。(即理想滤波器对应时域无穷宽,在-∞时刻也会出现值,这是不可能的)
3.实际的信号滤波过程,在时域上进行,运用差分方程,实时输出信号。

间接法设计步骤:
1.设计模拟滤波器
1.1根据给定指标wp,ws,ap,as,算出巴特沃斯滤波器的阶数N以及wc(注意区分通带富余和阻带富余)
1.2查表得到G§的表达式
1.3将s=wc*p代入G§,得到H(s)的表达式
2.将模拟滤波器转换为数字滤波器
(转换的原因,离散信号是对模拟信号采样,然后序列化后得到的信号,故数字域的频率和模拟域的频率会存在一定的转换关系)
2.1脉冲响应不变法,模拟s域每2π/T为一个周期,都会映射到z域的单位圆,所以会出现频率混叠,但是数字域的频率w与模拟域的频率Ω是线性的关系,即w=Ω×T
2.2双线性变换法,将整个模拟频率轴压缩到±π/T,再映射到z域的单位圆上,故不会发生频率混叠,但是由于是非线性关系,数字域的频响曲线不能保真地模仿模拟域的频响曲线,会有一定失真

代码实现

两种办法设计滤波器(matlab在设计巴特沃斯滤波器时默认使用双线性变换)
1.直接数字滤波器
注:这里要对数字频率进行归一化(除fs/2)

fs=10000;
ap=3;
as=60;
wp_d=400/(fs/2);
ws_d=1500/(fs/2);
%设计巴特沃斯滤波器(数字)
[N_d,wc_d]=buttord(wp_d,ws_d,ap,as);
[b_d,a_d]=butter(N_d,wc_d);
figure;
freqz(b_d,a_d);

2.先设计模拟滤波器,然后再转换为数字滤波器
注:这里需要做“预畸变校正”,因为想要滤去的数字频率与对应的模拟频率是一个非线性关系。还有就是模拟频响函数为freqs。。。

wp_s=2*fs*(tan(pi/2*400/(fs/2)));
ws_s=2*fs*(tan(pi/2*1500/(fs/2)));
%设计巴特沃斯滤波器(模拟)
[N_s,wc_s]=buttord(wp_s,ws_s,ap,as,'s');
[b_s,a_s]=butter(N_s,wc_s,'s');
[n,d]=bilinear(b_s,a_s,fs);
freqz(n,d);


利用这个滤波器去对双频信号滤波,效果还不错

%生成信号
t=0:1/fs:0.2-1/fs;
f=sin(200*2*pi*t)+sin(1700*2*pi*t);
figure;
subplot(221);
plot(t,f);title('时域');axis([0 0.2 -2 2]);
F=fft(f);
fre=0:5:fs-5;
subplot(222);
plot(fre,abs(F));title('频域');%滤波
res=filter(b_d,a_d,f);
subplot(223);
plot(t,res);title('滤波结果 时域');axis([0 0.2 -2 2]);
Res_F=fft(res);
subplot(224);
plot(fre,abs(Res_F));title('滤波结果 频域');

思考

如何解释使用使用带通滤波器却出现缓慢上升的现象?即下图

分析:
首先看到这个时域波形,我就觉得应该是h(n)在开头卷积的时候没有完全进入导致的,回来研究了下,大概可以解释这个现象了。

解:
原因在于在设计带通滤波器时,阻带边界频率与通带边界频率相差太短,故此时过渡带下降过快,对应时域的单位脉冲响应波形就会很宽,即这样:

所以在时域卷积时,反折平移,整个h(n)要花一定的时间才能进入,才会有了上图开头部分的缓慢上升现象。
如果把过渡带拉大,单位脉冲响应就会变窄,即:

得到的输出就好就不会出现上述情况,但是为了效果滤去的频率是不同的:

数字信号处理——巴特沃斯滤波器设计相关推荐

  1. 基于matlab的巴特沃斯滤波器设计

    一.butterworth滤波器也称最平响应特性滤波器,其特征多项式为: |K(jΩ)|^2=K(jΩ)K(-jΩ)=(Ω/Ωc)^2N 巴特沃斯滤波器的模平方函数为: |H(jΩ)|^2=1/(1+ ...

  2. matlab模拟巴特沃斯滤波器设计,巴特沃斯滤波器matlab实现

    描述 巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零. 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大 ...

  3. 巴特沃斯滤波器设计案例

    函数时候看这里:传送门 clc; clear all; fp=8; fs=3; Rp=5; %通带最大衰减 Rs=30; %阻带最小衰减 wp=fp*2*pi; %通带截止频率 ws=fs*2*pi; ...

  4. matlab巴特沃斯滤波器设计

    %% 滤波 Wp = input('通带截止频率(Hz)'); Ws = input('阻带截止频率(Hz)'); rp = input('通带波动 (dB)'); rs = input('阻带波动 ...

  5. 设计一个三阶巴特沃斯滤波器_巴特沃斯滤波器频率设计及增益多项式方程

    在之前的滤波器教程中,我们研究了简单的一阶型低通和高通滤波器,它们的RC滤波器电路设计中只包含一个电阻器和一个无功元件(电容器). 在使用滤波器对信号的频谱进行整形的应用中,例如在通信或控制系统中,滚 ...

  6. 巴特沃斯滤波器matlab代码,MATLAB实现巴特沃斯数字滤波器

    MATLAB实现巴特沃斯数字滤波器 前因:因为要准备保研面试,今年暑假就重新把烂尾的项目捡起来了. 为了提取采集到的脑电信号中有用的部分,想用数字带通滤波器实现,浏览了很多帖子.要不是只有代码,没有注 ...

  7. MATLAB_数字信号处理_模拟滤波器_设计巴特沃斯滤波器

    简介 巴特沃斯滤波器-百度百科 巴特沃斯滤波器-维基百科 简介:巴特沃斯滤波器是一种模拟滤波器,它在频率响应方面具有特殊的属性.它被设计为具有均匀的幅度响应,即在通带内,它对所有频率的增益是相等的,而 ...

  8. 巴特沃斯滤波器应用场合_巴特沃斯数字低通滤波器设计及应用

    龙源期刊网 http://www.qikan.com.cn 巴特沃斯数字低通滤波器设计及应用 作者:汪其锐 王桂华 王永军 来源:<山东工业技术> 2016 年第 24 期 摘 要:现实生 ...

  9. 数字信号处理公式变程序(四)——巴特沃斯滤波器(下)

    之前已经讲过巴特沃斯滤波器的基础知识和数字滤波器求系统函数的代码实现,本节讲如何使用数字滤波器的系统函数实现对信号的滤波. 注:可能会有不足或者理解偏差的地方,路过的高人请不吝赐教. OK,开始! = ...

最新文章

  1. 系统二级运维之业务单据错误处理
  2. 物联网的未来:关于物联网的10个预测
  3. .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
  4. 大数据项目交付国标_在紧迫的期限内交付大型项目
  5. python今日内容_python笔记15
  6. android底层重构,【理论】【转】Android项目重构之路:实现篇
  7. 深入理解BeanPostProcessor接口
  8. 对家自动驾驶汽车出 Bug?马斯克幸灾乐祸:“哈哈!”
  9. cf 165 div2 解题报告
  10. 线程基础阶段性总结和扩展(一)
  11. 转录组分析_20个必须知道的转录组知识点!
  12. hadoop 起动是的时候报错 localhost: Could not create the Java virtual machine._far beyond me,thks~~_百度空间...
  13. Moya、RxMoya基本使用
  14. Opencv多版本共存问题
  15. matlab中的灰色预测,灰色预测MATLAB程序
  16. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略
  17. 国标GB28181安防摄像头如何通过视频流媒体服务器建设阳光考场?
  18. POI(excel)中WorkBook和Sheet应用实践总结
  19. Http长连接、短连接、持久连接这三个概念的分析总结
  20. Ada语言实现-水和水蒸气热力性质IAPWS-IF1997

热门文章

  1. 从spring容器中获取对象工具类
  2. 鸿蒙手机播放音乐-第一集
  3. matlab 倾斜矫正,matlab图像倾斜校正
  4. 解决docker中运行scrapy使用chrome selenium报错InvalidSessionIdException: Message: invalid session id
  5. Linux/Mac 配置安装scala
  6. 解决Hbase报错java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for....
  7. 定期存款可以提前取出来吗_定期存款、约定转存、自动转存和自己取出来转存有什么不同?...
  8. w ndows太卡,用Windows 10太卡?教你快速干掉Windows Defender
  9. Python 学习过程问题记录
  10. 昂贵的聘礼(枚举区间+最短路)