目录

一、理论基础

二、案例背景

三、MATLAB核心代码

四、仿真结论分析


一、理论基础

等波纹最佳逼近法,其本质是一种优化算法,该方法有效克服了基于窗函数的FIR滤波器设计方法以及基于频率抽样的FIR滤波器设计方法所存在的各种缺点,使得算法的设计误差达到最小值。而基于等波纹最佳逼近法的FIR数字滤波器,其频谱特性曲线在通带和阻带上都具有等纹波特性。

二、案例背景

滤波器的含义,就是指对输入信号有着消除噪声和平滑功能的系统[01]。根据处理信号种类的不同,将处理连续信号的滤波器称为模拟滤波器,将处理离散信号的滤波器称为数字滤波器。随着通信多媒体技术的飞速发展,数字滤波器成为数字信号处理领域中一个越来越重要的组成部分,其广泛应用在信息通信、语音传输、自适应控制等众多领域。从结构上分,数字滤波器可以分为FIR数字滤波器和IIR数字滤波器两种基本类型。其中,FIR滤波器的设计方法有许多种,如窗函数设计法、频率取样法和等波纹最佳逼近法,本文主要针对FIR滤波器的实现原理和设计方法进行了研究。

数字滤波器本质上讲是一种通过有限精度算法来运算的线性时不变离散系统,其具有特定的传输选择性,数字滤波器的输入和输出信号均为离散数字信号。数字滤波器的工作原理为,通过一个离散数字系统,对输入的数字信号进行运算,处理,变换等各种数字信号操作,从而实现改变数字输入序列的频谱特性或者时域波形,将有用的信号频谱分量进行保留,消除无用的信号频谱分量。数字滤波器,在功能上可以分为低通数字滤波器、高通数字滤波器、带通数字滤波器以及带阻数字滤波器四种类型。相对于模拟滤波器,数字滤波器具有高精度,高稳定性,高灵活性等优势。

三、MATLAB核心代码

clc;
clear;
close all;Wp=0.2*pi; Ws=0.3*pi; wdelta= Ws-Wp;Fs=1000;T=1/Fs;N=1000;
t=0:T:(N-1)*T;
st=sin(2*pi*t*100);
subplot(3,1,1);plot(st);
nt=2*rand(1,N)-1;
xt=nt+st;
subplot(3,1,2);plot(xt);
fp=120;fs=150;Rp=0.2;As=60;Fs=1000;
wc=(fs+fp)/Fs;
B=2*pi*(fs-fp)/Fs;
Nb=ceil(11*pi/B);
hn=fir1(Nb-1,wc,blackman(Nb));
Hw=abs(fft(hn,1024));
ywt=fftfilt(hn,xt,N);
pp=abs(fft(xt,1024));
subplot(3,1,3);
plot(pp);%用窗函数设计方法绘制滤波器损耗函数以及输出信号波形
hd = dfilt.dffir(hn)
[H,W]=freqz(hd);
m=abs(H);
figure(2);subplot(3,1,1);
plot(W/pi,20*log10(m/max(m)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)')
axis([0,1,-100,0]);title('损耗函数曲线及其频谱图')
subplot(3,1,2);
plot(ywt);
ss=abs(fft(ywt,1024));
subplot(3,1,3);
plot(ss);%用等波纹最佳逼近法设计滤波器
fb=[fp,fs];m=[1,0];
dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];
[Ne,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(Ne,fo,mo,W);
Hw=abs(fft(hn,1024));
yet=fftfilt(hn,xt,N);%用等波纹最佳逼近方法绘制滤波器损耗函数以及输出信号波形
hd = dfilt.dffir(hn)
[H,W]=freqz(hd);
m=abs(H);
figure(3);subplot(3,1,1);
plot(W/pi,20*log10(m/max(m)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)')
axis([0,1,-100,0]);title('损耗函数曲线及其频谱图')
subplot(3,1,2);
plot(yet);
aa=abs(fft(yet,1024));
subplot(3,1,3);
plot(aa);figure;
plot(W/pi,20*log10(m/max(m)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)')
axis([0,1,-100,0]);
clc;
clear;
close all;Wp=0.15*pi; Ws=0.4*pi; wdelta= Ws-Wp;Fs=1000;T=1/Fs;N=1000;
t=0:T:(N-1)*T;
st=sin(2*pi*t*100);
% subplot(3,1,1);plot(st);
nt=2*rand(1,N)-1;
xt=nt+st;
% subplot(3,1,2);plot(xt);
fp=120;fs=150;Rp=0.2;As=60;Fs=1000;
wc=(fs+fp)/Fs;
B=2*pi*(fs-fp)/Fs;
Nb=ceil(11*pi/B);
hn=fir1(Nb-1,wc,blackman(Nb));
Hw=abs(fft(hn,1024));
ywt=fftfilt(hn,xt,N);
pp=abs(fft(xt,1024));
% subplot(3,1,3);
% plot(pp);%用窗函数设计方法绘制滤波器损耗函数以及输出信号波形
hd = dfilt.dffir(hn)
[H,W]=freqz(hd);
m=abs(H);%用等波纹最佳逼近法设计滤波器
fb=[fp,fs];m=[1,0];
dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];
[Ne,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(Ne,fo,mo,W);
Hw=abs(fft(hn,1024));
yet=fftfilt(hn,xt,N);%用等波纹最佳逼近方法绘制滤波器损耗函数以及输出信号波形
hd = dfilt.dffir(hn)
[H,W]=freqz(hd);
m=abs(H);
figure;
subplot(3,1,1);
plot(W/pi,20*log10(m/max(m)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)')
axis([0,1,-100,0]);title('损耗函数曲线及其频谱图')
subplot(3,1,2);
plot(yet);
aa=abs(fft(yet,1024));
subplot(3,1,3);
plot(aa);figure;
plot(W/pi,20*log10(m/max(m)));grid on;
xlabel('\omega/\pi');ylabel('幅度(dB)')
axis([0,1,-100,0]);freqz(hn,1,512); Ts=1/1000  ;%设置采样频率
t=0:Ts:3*pi;
y=sin(2*pi*t)+cos(400*pi*t)+cos(600*pi*t);y_Win=filter(hn,1,y);
figure
plotspec(y_Win,Ts); figure
plotspec(y,Ts); 

四、仿真结论分析

利用MATLAB可以响应的低通滤波器的时域和频率的波形图:

等波纹最佳逼近法的最优逼近,是指在滤波器长度已知的情况下,通过加权优化的方法,使得纹波误差的值达到最小。因此,在相同阶数的情况下,基于等波纹最佳逼近法的FIR数字滤波器的通带衰减最小,阻带衰减最大。而在相同性能的情况下,基于等波纹最佳逼近法的FIR数字滤波器的阶数可以达到最小。

这里对等波纹逼近法所设计的FIR滤波器进行仿真,通过MATLAB仿真,获得如下的仿真结果:

从图的仿真结果克制,当信号中存在较大干扰噪声的时候,通过等波纹逼近法所设计的FIR滤波器依旧可以获得较好的滤波效果。A25-25

基于等波纹最佳逼近法的FIR数字滤波器实现matlab仿真相关推荐

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

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

  2. Matlab | 数字信号处理:用窗函数法设计FIR数字滤波器

    ========================================== 博主github:https://github.com/MichaelBeechan 博主CSDN:https:/ ...

  3. MATLAB窗函数法设计FIR 数字滤波器

    一.实验目的 1. 熟悉线性相位 FIR 数字滤波器特性. 2. 了解各种窗函数对滤波特性的影响. 3. 掌握用窗函数法设计 FIR 数字滤波器的原理.方法及计算机编程. 此时的h(n) 是有限长的, ...

  4. 窗函数法设计FIR数字滤波器

    一.   实验目的 1.1.1掌握用窗函数法设计FIR数字滤波器的原理和方法. 1.1.2熟悉线性相位FIR数字滤波器特性. 1.1.3了解各种窗函数对滤波特性的影响. 实验原理 窗函数设计法的基本原 ...

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

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

  6. 基于倒谱法和线性预测法估计基音频率(MATLAB和Python)

    基于倒谱法和线性预测法估计基音频率(MATLAB和Python) 倒谱法基音检测在python中实现 一帧信号的基音频率估计 wlen = 256 inc = 128 pitch = [] x1, F ...

  7. 基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...

    基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)(开题报告,论文10700字,程序代码,录像) 摘 要 随着无线通信技术的不断发展与进步,数字电视广播.移动视频点播等对数据吞吐量要 ...

  8. 基于二维切片图序列的三维立体建模MATLAB仿真

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 isosurface 等值面函数 调用格式: fv = isosurface(X,Y,Z,V,i ...

  9. (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真

    引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...

最新文章

  1. hdu 2454 Degree Sequence of Graph G
  2. 红5java_关于skywang123456之“红黑树(五)之 Java的实现”的改进与内容添加
  3. 美国国防部CIO:企业IT可考虑用开源做数据分析
  4. 我对新版CCNP考试的一点想法
  5. 面试准备每日五题:C++(八)——重写重载隐藏、vector相关
  6. 2018.08.22 NOIP模拟 string(模拟)
  7. 简述物联网感知技术_雄芯一号芯片发布 智慧城市物联网感知体系升级换新
  8. Django思维导图-模板
  9. 【番外篇】利率二叉树模型对冲
  10. 2014年5月欧洲地区SAT写作真题及解题技巧
  11. 模拟将本地文件上传至外服务器
  12. 苹果怎么换字体_苹果手机电池不行了怎么办,换什么牌子好?
  13. 如何去除Word中的波浪线?这三种方法很实用!
  14. 18.9.23 PION模拟赛
  15. Java生成Excel文件并响应给页面
  16. 云服务器修改虚拟内存,云服务器可以设置虚拟内存
  17. Linux操作系统学习笔记(二十)网络通信之TCP协议
  18. 初看一脸懵逼,看懂直接跪下!
  19. WC 2018 冬眠记
  20. [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark

热门文章

  1. 解决Spyder无法打开
  2. Web API 排他操作案例 —— 百度换肤
  3. R语言ggplot2画图
  4. 一看就懂的LSTM+Attention,此处用softmax求概率
  5. 事件委托的概念和原理
  6. Cortex‐M3的Faults异常究竟是什么?
  7. 办公室购买计算机会计分录,购入办公室固定资产如何做账?
  8. Java微服务开发指南 -- Java环境下的微服务
  9. 租用美国服务器 解决java延迟_如何降低美国服务器延迟?美国服务器延迟多少算正常?...
  10. ps如何填充自定义图案