当前位置: 首页 > article >正文

FIR半带滤波器

FIR半带滤波器

半带滤波器原理:

CIC滤波器是一种适合于工作在高采样率条件下的滤波器。

半带滤波器是一种非常适合于2倍抽取的FIR滤波器。

半带滤波器可以使2倍抽取的每秒乘法次数比一般线性相位的FIR滤波器减少近1/2。

半带滤波器是一种实现数字下变频的高效数字滤波器。

半带滤波器的特点

半带滤波器有以下特点:1、滤波器的通带和阻带对称,即通带容限和阻带容限相等。

2、滤波器的系数具有偶对称特性,且滤波器长度为偶数(滤波器阶数为奇数)。

滤波器所有的大于0的偶数序号的冲击响应值均为0。

半带滤波器的这一特性大大降低了滤波器运算所需的乘法及加法次数。

3、经半带滤波器滤波后,进行2倍抽取时,信号通带内没有频谱混叠,但阻带内有频谱混叠。

半带滤波器的MATLAB设计


% 利用Matlab提供的firhalfband函数设计阶数为16、
% 通阻带容限为0.0001的半带滤波器。
% 仿真测试滤波前后的信号时域图,绘制滤波器的频率响应特性图。
% 
% E6_10_HalfFilterMatlab.m
% 定义参数
f = 1000;  %信号频率为 1kHz
Fs = 40*f; %采样频率为40kHz
n = 16;    %半带滤波器阶数
D = 2;     %抽取因子
dev = 0.0001; %通阻带容限

% % 产生正弦波信号
t = 0:1/Fs:0.02;
c = 2*pi*f*t;
si = sin(c);

% 设计半带滤波器
b = firhalfband(n,dev,'dev')%;
% disp(b);
s = filter(b,1,si); %对信号进行滤波处理
s = s/max(abs(si)); %归一化处理
Ds = s(1:D:length(t)); %对滤波后信号进行抽取

% 绘图
figure(1);
x = 0:1:100;
x = x/Fs;
Dx = x(1:D:length(x));
subplot(211);
stem(x,si(1:length(x))); %绘制离散序列数据
title('Matlab 仿真滤波前信号时域波形');

subplot(212);
stem(Dx,Ds(1:length(Dx)));
title('Matlab 仿真滤波后信号时域波形');

figure(2);
freqz(b);

 

 

从运行结果可以看出,半带滤波器的系数有近一半为0,且呈偶对称特性。

从滤波前后信号的时域图、滤波器的频率响应图可以看出,经半带滤波器滤波后的信号,与原信号相比,波形没有改变,但抽样速率降低了一半;半带滤波器通阻带容限相同,具有严格的线性相位特性。


http://www.kler.cn/a/15357.html

相关文章:

  • UniApp在Vue3的setup语法糖下自定义组件插槽详解
  • 数据处理与统计分析——05-Pandas中DataFrame的方法、属性、索引等一系列操作
  • 在 CentOS 7 上安装 MinIO 的步骤
  • MySQL的聚簇索引和二级索引
  • 【汇编语言】数据处理的两个基本问题(二) —— 解密汇编语言:数据长度与寻址方式的综合应用
  • vue项目使用eslint+prettier管理项目格式化
  • 9.Java中异常处理机制是什么
  • Java 创建线程池的三种方式
  • 九耶丨阁瑞钛伦特-Java分布式(一)
  • MATLAB算法实战应用案例精讲-【智能优化算法】哈里斯鹰(HHO)(论文篇二)
  • 集成灶/小家电语音提示芯片方案-WTN6040-8S唯创知音自主研发
  • Android类似微信聊天页面教程(Kotlin)四——数据本地化
  • leetcode657. 机器人能否返回原点
  • 移动通信网络频段大全
  • OJ练习第91题——文本左右对齐
  • 3.7 Linux shell脚本编程(分支语句、循环语句)
  • C语言必背经典程序代码
  • 【VM服务管家】VM4.0软件使用_1.3全局模块类
  • Shiro相关知识
  • 获取Tree 树形控件下面的全部id
  • 小米青春版路由器刷openwrt
  • UE5实现Runtime环境下绘制点功能
  • 201709-1 打酱油
  • 基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)
  • Qt5.9学习笔记-事件(一)
  • 从线程安全到锁粒度,使用Redis分布式锁的注意事项