FIR滤波器组的设计与Matlab仿真

使用matlab的fdatool生成fir滤波器抽头系数导入Quartus FIR IP核中 打开matlab,输入fdatool 设置fir滤波器,具体参考这篇文章:https://blog.youkuaiyun.com/CHQC388/article/details/103885822 设计完成后,生成fir系数,导出.fcf文件 使用Notepad++打开.fcf文件,删除多余信息,按alt键选择多行,在每行后添加英文逗号(除最后一行) 再使用Sublime软件打开.fcf文件,去除多余的空格和换行符。快捷键ctrl+h进行替换,Find输入空格,Replace不输入,点击Replace all 阅读详情


FIR滤波器组的设计与Matlab仿真


    
1 引言
在许多数字信号处理系统中,如语音或音频信号处理中,有限冲激响应(FIR)滤波器是最常用的组件之一,它完成信号预调、频带选择和滤波等功能。FIR滤波器虽然在截止频率的边沿陡峭性能上不及无限冲激响应(IIR)滤波器,但是却具有严格的线性相位特性,稳定性好,能设计成多通带(或多阻带)滤波器组,所以能够在数字信号处理领域得到广泛的应用。
Matlab是mathswork公司推出的一套高性能的数值计算和可视化软件,它集数值分析、信号运算、矩阵运算、信号处理和图形显示于一体,具有很强的绘图功能。利用它自带的丰富的函数和信号处理工具箱,可以很方便地设计和仿真FIR滤波器组。
2 用窗函数法设计FIR滤波器
一个离散时间系统H(z)=B(z)/A(z),若分母多项式A(z)的系数a1=…=aN=0,那么该系统即变成FIR系统,即
                           (1)
显然,系数b0,b1,…,bM即是该系统的单位抽样响应h(0) ,h(1) ,…,h(M) ,且当n>M时,h(n)≡0。所对应的FIR滤波器的转移函数为
                                                  (2)
H(z)的频率响应应近似为Hd(ejw),而且是线性相位的。
FIR滤波器有许多行之有效的设计方法,如窗函数法、频率抽样法及最佳一致逼近法等,其中窗函数法很适合于带通滤波器组的设计。
一个截止频率为ωc的理想低通滤波器Hd(ejw),其冲激响应hd(n)是无限长和非因果的。对hd(n)加窗(窗函数用w(n)表示,窗宽为有限值M)的结果,便得到一个FIR滤波器h(n),它是对所要求的理想低通滤波器的逼近。如果窗函数w(n)和FIR滤波器h(n)的频率特性分别用W(ejw)和H(ejw)表示,则H(ejw)将等于W(ejw)和Hd(ejw)的卷积。由于窗函数频谱主瓣不是无限窄,因而FIR滤波器的频率特性在通带和阻带之间形成了一个过渡带。由于窗函数频谱中存在着旁瓣,因而FIR滤波器的频率特性在通带和阻带内产生了一些起伏振荡的波纹。
窗函数法设计的基本思想是对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数w(n)。常用的窗函数有矩形窗、巴特利特(Bartlett)窗、汉宁(Hanning)窗、哈明(Hamming)窗、布莱克曼(Blackman)窗和凯塞(Kaiser)窗,他们的主要区别在于参数主瓣3dB带宽B、最大边瓣峰值A(dB)和边瓣谱峰渐进衰减速度D(Db/oct)之间的差别。

3 FIR滤波器组的设计与Matlab仿真
3.1  FIR滤波器组的设计
用窗函数法设计FIR滤波器组的基本思路为: (1)根据所要求的分析频率范围和频率分辨率选择一组分析频率ωk及相对应的原型理想低通滤波器的截止频率ωck(k=0,1,…,L-1),L为滤波器组的通道数,得出理想带通滤波器组的复合频率响应。(2)用窗函数法近似实现各个理想带通滤波器。实际的复合频率响应等于理想复合频率响应与设计窗的频率特性的卷积。在用窗函数法设计FIR滤波器时,还需要知道通带内的纹波幅度δ,它可以根据阻带衰减量As的要求来确定,通常的典型值为
As=-20lgδ=40∽60                                              (3)
如果选择Kaiser窗,参数β的计算公式为
当As >50时,β=0.1102(As-8.7);
当21<As <50时,β=0.5845(As-21)0.5+0.07886(As-21)。            (4)
滤波器的阶数为
        M=(As-7.95)/14.36△F+1                                         (5)
式中△F是归一化过渡带宽,即△F=△f•T,而
        △f=△ω/2π                                                   (6)
过渡带宽△ω的选择根据对每个滤波器的频率分辨率要求来决定,必须满足限制条件
△ωk<2ωck                                                     (7)
如果各通道采用相同的设计窗,保证中心频率及带宽的选择能覆盖-π到π频率范围(不管滤波器的中心频率和带宽如何分布),那么最终得到的实际复合响应一定是理想的,即具有平坦幅度和线性相位。
在数字语音处理中,语音信号取样频率f s=9.6kHz,频谱分析范围为200Hz到3200Hz,设计一FIR带通滤波器组,使阻带内衰减为60dB。选取滤波器通道数L=15,均匀分布,则理想的原型低通滤波器的截止频率为
    f c=(3200-200)/(2x15)=100Hz
中心频率为
        f k =(200k+100)Hz,  k=1,2,…,15
采用Kaiser窗函数设计,要求δ=10-3,取As=-20lgδ=60,则由式(4)、(5)、(6)和(7)可计算出相应的参数为
        β=0.1102(As-8.7)=5.65326
        △f<2f c=200Hz
        △F<△f•T=200Hz/9600Hz
        M=(As-7.95)/14.36△F+1≈175
则带通滤波器组的实际复合冲激响应为
          h(n)=w(nd) δ(n-nd)
其中延时nd =(M-1)/2=87。
3.2 Matlab仿真
在Matlab平台上进行FIR滤波器组的仿真主要有两种途径:一是基于数据流的仿真,一是基于时间流的仿真。基于数据流的仿真是用Matlab函数以命令行的形式实现,在仿真过程中不能改变初始数据或仿真参数,若想改变只有终止仿真重新操作。基于时间流的仿真是用动态仿真工具Simulink来实现,它提供了很多模块库,只需将所需模块调出进行连接即可,初始数据或仿真参数在仿真过程中可以改变,以便动态地观察系统随之引起的变化。
两种方法相比较而言,基于数据流的仿真有较高的灵活性,对一些特殊的功能模块,由于有Matlab大量函数的支持,用软件编程实现比较容易。而Simulink提供的模块库虽然也很多,但仍然不能满足通信系统的要求,有一定的限制。因此,我们用函数编程来仿真。对前面提到的数字语音处理中的FIR带通滤波器组用Matlab进行仿真,根据系统所给参数编程,其源程序为如下:
%ideal_lp.m
function hd=ideal_lp(wc,M)
alpha=(M-1)/2;
n=[0:1:(M-1)];
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
%freqz_m.m
function [db,mag,pha,grd,w]=freqz_m(b,a)
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:1:501))';w=(w(1:1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(b,a,w);
%firkaiser.m
hh=0;
L=15;
As=60;
beta=0.1102*(As-8.7);
delta_f=(3200-200)/L;
delta_F=delta_f/9600;
M=round((As-7.95)/(14.36*delta_F)+1);
for i=1:L
w1=200*i*2*pi/9600;
w2=200*(i+1)*2*pi/9600;
n=[0:1:(M-1)];
hd=ideal_lp(w2,M)-ideal_lp(w1,M);
w_kaiser=(kaiser(M,beta))';
h=hd.*w_kaiser;
hh=hh+h;
[db,mag,pha,grd,w]=freqz_m(h,[1]);
delta_w=2*pi/1000;
subplot(2,1,1);plot(w/pi,db);title('Magnitude Response in dB');grid
axis([0 1 -70 10]);xlabel('frequency in pi units');ylabel('Decibels')
hold on
end
hold off
[db,mag,pha,grd,w]=freqz_m(hh,[1]);
delta_w=2*pi/1000;
subplot(2,1,2);plot(w/pi,db);title('Magnitude Response in dB');grid
axis([0 1 -100 10]);xlabel('frequency in pi units');ylabel('Decibels')
仿真的结果如图1所示,上半部分为各个通道独立的幅频特性,下半部分为滤波器组复合幅频特性。从图中可以看出,阻带衰减达63dB,满足技术指标的要求。

图1 幅频特性图
    将源程序中滤波器组的幅频特性纵轴输出参数稍做调整,则可以得到图2所示的幅频特性,从图中可以看出通带纹波幅度δ小于0.02dB(即小于10-3),完全满足技术指标的要求。

图2 通带纹波幅度
4 结束语
    MATLAB在数字信号处理中的应用越来越广泛,用MATLAB来设计和仿真FIR滤波器组即简便又易于调整参数,是以往其他设计和仿真方法所无法比拟的,是工程技术人员进行系统设计和仿真的得力助手。
参考文献:
[1][美]维纳·K·恩格尔著。Digital Signal Processing Using MATLAB。西安交通大学出版社,2002年
[2][美]Shoichiro Nakamura著。Numerical Analysis and Graphic Visualization with MATLAB (Second Edition)。电子工业出版社,2002年
[3]姚天任著。数字语音处理。华中科技大学出版社,2002年

现代雷达动目标检测(MTD)技术解析---从多普勒滤波到优化设计 本文深入解析现代雷达动目标检测(MTD)技术,从多普勒滤波基础到优化设计实践。详细介绍了MTD技术的核心原理、多普勒滤波器组的数学基础、MTI级联FFT设计方法,以及优化MTD滤波器组的关键技术。通过MATLAB仿真案例和工程实践考量,帮助读者掌握雷达信号处理中运动目标检测的核心技术,提升在强杂波环境下的目标识别能力。 阅读详情

相关推荐

【数字信道】多相滤波信道化接收机的MATLAB实现与性能优化

本文详细介绍了多相滤波信道化接收机在MATLAB中的实现与性能优化方法。通过多相滤波技术将宽带信号分解为多个窄带信号,显著提升处理效率并降低功耗。文章包含参数配置、滤波器组设计、信道化处理流程等关键步骤,并提供了计算效率提升和抗干扰增强的实战技巧,适用于数字信道处理与无线通信系统设计。

weixin_29061509的博客 443

Matlab 生成fir滤波器抽头系数

1、 打开 MATLAB 软件,在命令窗口输入 fdatool 并回车,就会弹出滤波器设计工具 2、 FIR滤波器设计方法有多种,,最常用的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用...

bleauchat的博客 3万+

数据压缩(十二)——matlab傅里叶变换仿真分析和《完全重建QMF滤波器组的设计》阅读

文章目录一、MATLAB傅里叶变换仿真分析1.1 matlab代码1.2 结果1.3 结果分析二、《完全重建QMF滤波器组的设计》2.1 完全重建QMF滤波器组2.2 两通道正交镜像滤波器组理论2.3 完全重建QMFB遇到的问题和解决方法2.4 完全重建QMFB的设计确定N值和w值matlab代码【结果】滤波器H0(z)H_0(z)H0​(z)和H1(z)H_1(z)H1​(z)的幅度响应【结果】幅度响应关系误差【结果】输入信号&理想输出信号(红色线)与重建的输出信号(蓝色线)【结果】理想输出信号与

CRR的博客 1948

springboot学习系列:项目运行存在多个相同路径的文件,导致项目运行异常的解决措施

旧项目改造成微服务项目,有些项目存在多个相同路径的Java文件,在运行过程中,时常遇到找不到方法的问题。本篇博客主要是针对此种情况进行问题的解决。

枫夜 1349

用matlab实现完全重建两通道滤波器组的程序详解

近期由于项目需要两通道滤波器组的基础知识和仿真实现,我就在网上学习了很多两通道滤波器组的知识,但是其仿真实现的程序却很少见。为此,小编就根据所学知识,认真完成了两通道滤波器组的完全重建仿真程序,给一些需要的朋友提供一些便利

沉默时光 6586

71、离散滤波器设计与应用详解

本文详细探讨了离散滤波器的设计与应用,涵盖FIR和IIR滤波器的基础理论、传递函数求解、相位特性分析及MATLAB实现。内容包括Butterworth、Chebyshev和椭圆滤波器的设计比较,双线性变换的频率畸变效应,全通滤波器转换,以及在音频和图像处理中的实际应用,如三频段频谱分析仪、高斯模糊、Sobel边缘检测和圆形滤波器组设计。通过理论计算与仿真验证相结合,系统展示了从需求分析到性能优化的完整滤波器设计流程。

t8u9v0w1x的博客 60

MATLAB+VIVADO设计FIR滤波器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、滤波器系数的生成 二、FPGA的实现 1.FIR滤波器IP核 2.导入参数 总结 前言 数字信号处理中需要用到FIR滤波器进行一些滤波处理或加窗,XILINX 7系列的FPGA,在vivado下通常使用IP核生成可使用的滤波器,下面介绍配置方法。 一、滤波器系数的生成 首先在matlab的APP中找到filter designer或在命令行里输入: fdatool...

judas1801的博客 1万+

MATLAB雷达动目标检测仿真包:FFT杂波抑制与FIR多普勒滤波器组实现

一套开箱即用的MATLAB雷达MTD处理仿真资源,专注脉冲多普勒体制下的动目标检测全流程实现。包含两套主流技术路径:一是基于FFT的级联MTI/MTD处理方案,提供8点和16点FFT配置(mti_fft8.m、mti_fft16.m等),支持杂波对消与多普勒谱分析;二是基于FIR滤波器组的MTD实现(fir_mtd8.m、fir_mtd16.m及配套滤波器组构建脚本fir_banks8.m/fir_banks16.m),可灵活配置通道数与滤波响应。所有主函数均附带完整测试脚本(.m与.asv格式)及实测原始

kappa的博客 204

基于FIR滤波器组的设计与Matlab仿真

对hd(n)加窗(窗函数用w(n)表示,窗宽为有限值M)的结果,便得到一个FIR滤波器h(n),它是对所要求的理想低通滤波器的逼近。,L-1),L为滤波器组的通道数,得出理想带通滤波器组的复合频率响应。常用的窗函数有矩形窗、巴特利特(Bartlett)窗、汉宁(Hanning)窗、哈明(Hamming)窗、布莱克曼(Blackman)窗和凯塞(Kaiser)窗,他们的主要区别在于参数主瓣3dB带宽B、最大边瓣峰值A(dB)和边瓣谱峰渐进衰减速度D(Db/oct)之间的差别。显然,系数b0,b1,…

2401_84149290的博客 921

FIR带通滤波器MATLAB程序

产生3个正弦成份(15hz 55hz 75hz)的信号 用带通滤波器去除15和75hz 成份。

Windows系统3D Gaussian Splatting环境搭建全攻略:从零开始到成功运行

本文详细介绍了在Windows系统上搭建3D Gaussian Splatting环境的完整流程,包括CUDA 12.6安装、Anaconda环境配置、代码获取与依赖安装等关键步骤。针对Windows平台特有的环境配置问题,提供了实用的解决方案和常见错误排查方法,帮助开发者快速实现3D Gaussian Splatting的成功运行。

weixin_30832143的博客 454

fir低通滤波器 阻带衰减在5khz处为-60db matlab,FIR滤波器组的设计与Matlab仿真

滤波器的阶数为M=(As-7.95)/14.36△F+1 (5) 式中△F是归一化过渡带宽,即△F=△f?T,而△f=△ω/2π (6) 过渡带宽△ω的选择根据对每个滤波器的频率分辨率要求来决定,必须满足限制条件△ωk&...

weixin_39923137的博客 1296

若依ruoyi框架实现单点登录或者接入统一认证

log.info("单点登录用户[{}]不存在, 需要创建.", loginName);log.info("单点登录用户[{}]已存在.", loginName);jsonObjectData.put("nickName","单点1");if (code.equals("0")) {//验证成功需要自动登录。jsonObject.put("msg","验证成功");ajax.put("msg", "登录成功");

GitHub质检员 2万+

基于FPGA的FIR滤波Reloadable功能仿真

最后,编写testbench文件,在复位结束之后,取出单口ROM中的混频信号同时根据配置取出对应的滤波器系数加载进入FIR核进行滤波操作,间隔一段时间后配置另外一组滤波器系数进行数据滤波。并将滤波器和混频后的信号归一化定点量化后输出为.coe文件。在实际使用过程中,滤波器系数可以通过上位机配置下来,FPGA侧使用双口RAM或者其他缓存进行存储,当上位机告诉底层需要某组滤波器系数进行数据滤波,FPGA只需从双口RAM中读出固定位置的滤波器系数进行重载滤波即可,且滤波器系数上位机可以实时更新。

weixin_47948449的博客 1002

推荐系统在音乐领域的实践:网易云音乐推荐算法解析

你是否有过这样的经历?打开网易云音乐,“私人FM”里总能推到你想听的歌;“每日推荐”的歌单,往往藏着你没听过但一入耳就爱上的曲目。这些“懂你”的推荐背后,是一套复杂却精密的推荐系统在运转。问题陈述:音乐推荐的难点远超一般商品——音乐是高度主观的艺术,用户兴趣易随心情、场景变化;小众音乐的“长尾效应”显著,如何让冷门好歌被发现?传统协同过滤依赖历史行为,面对新用户/新歌曲的“冷启动”问题束手无策;而单纯的内容推荐又难以捕捉用户的隐性兴趣。核心方案:网易云音乐采用“混合推荐策略”——融合协同过滤(CF)

AI天才研究院 2091

基于遗传算法的码头泊位分配调度优化问题求解

例如,基因型为 [3, 1, 4, 2] 表示第一艘停靠在第三个泊位,第二艘停靠在第一个泊位,以此类推。同时,该码头有 n 艘船需要停靠,每艘船的货物数量、船长、船宽都不同,需要根据其特性来分配合适的泊位,并确定每个泊位的使用时间,以最大化码头的使用效率。码头的泊位分配调度是一个关键的物流问题,它涉及到船舶的进出港、货物的装卸和存储等多个方面,因此对其进行优化是至关重要的。根据得到的最优个体,可以得到每个泊位停靠的船只、使用时间等信息,从而确定码头的泊位分配调度方案。% 不同船只的货物数量。

uote_e的博客 1076

【FIR滤波器】调频连续波Chirp雷达研究附Matlab代码

调频连续波(Chirp)雷达凭借其高距离分辨率、低峰值功率、抗干扰能力强等优势,广泛应用于汽车防撞、无人机探测、气象监测等多个领域。有限脉冲响应(FIR)滤波器作为数字信号处理的核心器件,因其严格的线性相位特性、绝对稳定性及设计灵活性,在Chirp雷达的信号净化、失真修复及杂波抑制中发挥着不可替代的作用。

qq_72962865的博客 151

【雕爷学编程】Arduino动手做(75)---TTL转RS-485模块之二线制可以实现真正的多点双向通信

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验七十五:TTL转RS-485模块 MAX485 RS485模块 MAX485 是一个8.

雕爷学编程 1万+

mti杂波抑制仿真 matlab,雷达MTI/MTD杂波抑制技术研究

摘要:在雷达系统中,杂波抑制技术是信号处理的关键技术之一.现代雷达都工作在相当复杂的环境中,各种杂波和噪声严重影响着雷达的性能,杂波抑制技术具有消除杂波并提取有用信号的功能,对雷达检测动目标来说,具有非常重要的意义.其中动目标显示(MTI)技术和动目标检测(MTD)技术是两种重要的杂波抑制技术,广泛应用在现代的雷达系统中. 本文首先介绍了杂波抑制技术的应用背景,指出杂波抑制技术在雷达系统中的重要性...

weixin_30486919的博客 4195

基于3D相机的人体穴位识别与标注系统——完整Python实现方案

摘要 本文提出了一种基于3D相机的人体穴位识别与标注系统完整实现方案。系统采用Intel RealSense D435相机实时采集RGB-D数据,结合MediaPipe Pose模型进行人体33个关键骨骼点的三维姿态估计。通过建立穴位与骨骼关键点的映射关系,利用相机内参和深度信息将二维图像坐标转换为三维空间坐标。系统采用模块化设计,包含数据采集层、算法处理层、坐标转换层和可视化层,实现了穴位定位、三维坐标转换和点云可视化功能。关键技术包括:基于骨度折量法的穴位映射算法、深度图像到三维点云的转换方法,以及Op

AI的内部世界的博客 273

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 825
上一篇: Matlab数字图像处理技术-最终版
下一篇: 基于Matlab的简单数字信号发生器实现方法
GPT_code
博客等级 码龄3年 3543粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值