导语

本文采用MATLAB R2014b对x.mat信号进行了时域频域的分析,同时创建窗函数、IIR模拟巴特沃兹、IIR数字滤波器对x.mat信号进行滤波处理。

原始信号的时频域分析

我是把x.mat信号放到了E盘目录下,其长度为100,进行时频域分析后,进行画图可以看到。当然不一定非要用x.mat,这个只是我用来测试的信号,大家自己选取就好,注意信号的长度。

load('E:\x.mat');
n=0:99;%长度
freqz(x);%求取频域
[X,w]=freqz(x);%对x信号进行频域分析
figure;
subplot(2,1,1); stem(n,x); grid;
subplot(2,1,2); plot(w/pi,abs(X));grid;%归一化处理


滤波器设计

上文我们已经分析出来他的幅频特性和相频特性,可以看出归一化后的0.2、0.5、0.9三个频点为信号的主要构成部分,因此下文进行三个滤波处理,分别滤出来三个频段信号

FIR窗函数低通滤波

这个没什么好说的,主要是对FIR窗的参数进行调用修改,可以修改的有wp1与ws1,分别对应通带与阻带频率,还有滤波器长度与矩形窗的时域响应是对应的,不同的窗有不同的特性。

%窗函数低通FIR滤波器设计
wp1=0.3*pi;ws1=0.48*pi;   %性能指标
wdelta1=ws1-wp1;   %过渡带宽度
N1=ceil(0.92*pi/wdelta1);  %滤波器长度
Nw1=2*N1+1;     %窗口长度
wc1=(ws1+wp1)/2;  %截止频率
win1=boxcar(Nw1);%矩形窗的时域响应
b1=fir1(Nw1-1,wc1/pi,win1);%fir1是基于加窗的线性相位FIR数字滤波器设计函数
fx1=filter(b1,1,x);
figure;
subplot(2,1,1);stem(n,fx1);
fxd1=freqz(fx1);
subplot(2,1,2);plot(w/pi,abs(fxd1)); grid;
title('低通滤波器');

经过滤波后,我们再分析可以看到x信号经过低通出

如图为x信号经过LP后的时频域分析,低通滤波后对0.2频点的信号保留较好,0.5和0.9仍有残留,说明是滤波器的参数设定不够适量,但是已经满足我所需题目的要求。大家可以再去自己修改配置参数。
而滤波器本身的参数,请大家看IIR模拟的代码部分介绍。

IIR模拟带通滤波器

IIR模拟滤波器可以说,配置就相对FIR复杂很多了,我用其制作带通滤波器,设定通带、阻带频率,以及其他的频率变化法等计算需要一定的数字信号处理的知识支撑,如果不太懂的话,可以开放给大家修改的就是,四个上下限通带阻带频率与rp、rs。分别对应带内衰减,与带外衰减。

%带通滤波器   通带0.4-0.6  阻带0.3   0.7   αs=20    50->47
Fs3=1000;%给定抽样频率
wp_d=400;%通带下限截止频率
wp_s=600;%通带上限截止频率
ws_d=300;%阻带下限截止频率
ws_s=700;%阻带上限截止频率
wp3=[wp_d wp_s]/Fs3;
ws3=[ws_d ws_s]/Fs3;%计算通带截止频率wp,阻带频率ws
rp3=3;rs3=20;%设置通带允许最大衰减设置为3dB,阻带应达到的最小衰减为20dB
[n3,wn3]=buttord(wp3,ws3,rp3,rs3);%计算巴特沃斯滤波器阶次和截止频率
%N为滤波器阶数 wn为滤波器截止频率 数字滤波器
[bz3,az3]=butter(n3,wn3,'bandpass');%频率变换法设计巴特沃斯带通滤波器
[X3,w3]=freqz(bz3,az3,256,Fs3/1500);
subplot(4,4,12); plot(w3/pi,angle(X3));
title('IIR带通滤波器相位响应');
subplot(4,4,16); plot(w3/pi,abs(X3));
title('IIR带通滤波器幅度响应');
fx3=filter(bz3,az3,x);
fxd3=freqz(fx3);
subplot(4,4,4);stem(n,fx3);
title('x信号经过IIR带通滤波器的时域分析');
subplot(4,4,8);plot(w/pi,abs(fxd3)); grid;
title('x信号经过IIR带通滤波器的频域分析');

这个地方就显示了滤波器本身的参数,在最后的六行,其先将fx计算出来,再进行freqz计算,画图。x信号经过带通出

IIR带通滤波器参数

IIR数字高通滤波器

%高通滤波器   通带0.75  阻带0.5  αs=20
rp2=3;rs2=20;%设置通带允许最大衰减设置为3dB,阻带应达到的最小衰减为20dB
wp2=0.75*pi;%通带频率
ws2=0.5*pi;%阻带频率
FS2=1;    % let Fs=1
wap2=tan(wp2/2); was2=tan(ws2/2);%预畸变公式
[n2,wn2]=buttord(wap2,was2,rp2,rs2,'s');%设计等效模拟滤波器
[z2,p2,k2]=buttap(n2);
[bp2,ap2]=zp2tf(z2,p2,k2);%设计模拟低通原型滤波器
[bs2,as2]=lp2hp(bp2,ap2,wap2);%将模拟低通原型滤波器转换为高通滤波器
[bz2,az2]=bilinear(bs2,as2,FS2/2);%实现双线性变换,即由模拟滤波器 得到数字滤波器
fx2=filter(bz2,az2,x);
figure;
subplot(2,1,1);stem(n,fx2);
fxd2=freqz(fx2);
subplot(2,1,2);plot(w/pi,abs(fxd2)); grid;
title('IIR数字高通滤波器');

可以看到IIR滤波器对理论知识分析要求较高,FIR只需要对不同窗函数的相关参数特性记住会修改分析就好了。x信号经过高通出

结论

看下图,在FIR与IIR的模拟与数字方面,我对IIR模拟进行了比较综合分析,大家如果想对其他两个滤波器详细分析,可以参考IIR模拟的滤波器。

代码中其他部分小的算法就不再阐述了,都有注释的
数字信号处理下的滤波器其实都是理论知识在里面的,作者做这个实验也是为了论证一下课本的一些题目以及设计综合实验而学习的,至于这些滤波器的其他LP、HP或者BP的代码,大家打开链接进行下载即可。PS:文件内的x.mat不要修改,load的位置注意看清楚。
百度网盘:滤波器代码链接
链接:https://pan.baidu.com/s/1crnYVl76MLxnQk3bJzCAug
提取码:zlet
里面可能有些注释或者什么的小问题可以在评论里询问。

FIR窗函数和IIR模拟、数字滤波器的MATLAB实现相关推荐

  1. 信号处理之FIR数字滤波器(Matlab仿真)

    数字滤波器的作用是滤除不感兴趣的信号,留下想要的信号.数字滤波器可分为无限脉冲响应(IIR)数字滤波器.有限脉冲响应(FIR)数字滤波器两种,两者各有优缺点,其中FIR数字滤波器因其具有良好的线性相位 ...

  2. matlab的数字滤波器,基于Matlab的IIR数字滤波器设计方法比较及应用

    0 引言 数字滤波器(Digital Filter)是指输入.输出都是离散时间信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件.数字滤波器在数字信号处理中起着非常重要 ...

  3. matlab使用矩形窗设计一个具有线性相位的低通数字滤波器,第七章习题与答案用矩形窗设计一个fir线性相位低通数字滤波器。已.doc...

    第七章习题与答案用矩形窗设计一个fir线性相位低通数字滤波器.已 第七章习题与答案 用矩形窗设计一个FIR线性相位低通数字滤波器.已知 .求出并画出曲线. 分析:此题给定的是理想线性相位低通滤波器,故 ...

  4. matlab使用矩形窗设计一个具有线性相位的低通数字滤波器,用矩形窗设计一个FIR线性相位低通数字滤波器...

    1 用矩形窗设计一个FIR线性相位低通数字滤波器.已知215.0Nc.求出nh并画出log20jeH曲线.分析此题给定的是理想线性相位低通滤波器故.-- 0- ccccjjdeeH 解deeHnhnj ...

  5. fir数字滤波器MATLAB设计,基于FIR数字滤波器的Matlab设计

    摘 要 :阐迷了FIR数字浦波器的窗a数设计方法,并利用Matlab语言实现了浦波器的设计与仿真.Matlab语言可以 方便.快捷地设计具有严格线性相位的FIR系跳,可节省大It的编程时间,提高编租效 ...

  6. fir 滤波参数的含义_详解FIR滤波器与IIR滤波器的具体区别

    姓名:高新诚       学号:17021223282 原文链接:http://mp.weixin.qq.com/s/tC_mdXIeusuggDV1tn3sOw [嵌牛导读]:在大学中学习到了FIR ...

  7. 无限长单位冲激响应(IIR)数字滤波器设计方法

    无限长单位冲激响应(IIR)数字滤波器设计方法) 一.数字滤波器的基本概念 二.数字滤波器的技术指标 三.全通滤波器 1.定义 2.一阶全通系统 3.二阶全通系统 4.N阶数字全通滤波器 5.全通系统 ...

  8. 简谈FIR滤波器和IIR滤波器的区别

    最近总是遇到很多大侠在问滤波器相关的问题,之前对这一方面接触不是很多,最近也是在学习一些这方面的知识,今天先和大侠简单聊一聊FIR滤波器和IIR滤波器的区别,后续等研究的差不多了,再更新有关滤波器的详 ...

  9. 【收藏】详解FIR滤波器和IIR滤波器的区别

    数字滤波器广泛应用于硬件电路设计,一般分为FIR滤波器和IIR滤波器.那么FIR滤波器和IIR滤波器有什么区别呢?本文通过几个例子做一个简单的总结. 一.FIR滤波器 定义: FIR滤波器是有限长单位 ...

最新文章

  1. 159. Leetcode 122. 买卖股票的最佳时机 II (贪心算法-股票题目)
  2. servlet的几个函数
  3. 网络设备之ospf2
  4. mysql索引与事务笔记_《MySQL技术内幕:InnoDB存储引擎》读书笔记五-锁、索引及事务...
  5. laravel ::all() 选择字段_Laravel 性能优化:优化 ORM 性能使应用程序高可用
  6. 第4章 类与对象 枚举类
  7. MATLAB GBK编码
  8. CAD的.net开发
  9. Hadoop_MapperContextInputSplitFileSplit源码浅析
  10. 电商供应链系统的DDD架构设计实战
  11. 计算机辅助审计笔记,审计笔记2.0 盘点
  12. App工厂之痛:一个知识问答社区的死亡样本
  13. mysql数据库设计教材_mySQL教程 第1章 数据库设计
  14. 编译原理 - 推导与归约(一)
  15. Pycharm中,pyqt5.11.1的Qt assistant显示
  16. 计算机制图符号制作,基本流程图的制作-通过在线制图工具绘制
  17. win10系统nfs服务器搭建
  18. IDC评述网:11月份海外域名主机服务商TOP10
  19. python 隐函数作图(原创简单方法)
  20. 基于单片机的车内滞留儿童预警系统设计

热门文章

  1. 2018南京大学计算机系夏令营上机考试(一)
  2. 弘辽科技:淘宝客单价高好还是低好?如何提高客单价?
  3. 《C语言程序设计》江宝钏主编-习题3-6-商和余
  4. JAVA父类强转子类
  5. Latex大括号花括号用法之多个子公式分别编号(a)(b)
  6. 笔记本电脑网络图标丢失解决流程
  7. 蔡琴 经典收藏APE
  8. 如何做好软文推广?如何写软文才可以精准引流?
  9. windows 下使用nginx 实现负载均衡
  10. python math库 sqrt eval_假设 math 标准库已导入,那么表达式 eval('math.sqrt(4)') 的值为 _________ 。( ) (2.0分)_学小易找答案...