任务要求:用汉宁窗函数法设计一个FIR数字带通滤波器,要求通带边界频率为400Hz,500Hz,阻带边界频率为350Hz,550Hz,通带最大衰减1dB,阻带最小衰减40dB,抽样频率为2kHz,用MATLAB画出幅频特性,画出并分析滤波器系统函数的零极点。

 一、设计缘由

本文采用的是汉宁窗来设计滤波器,窗函数的好处如下:

  • 窗函数可以控制滤波器的频率响应:窗函数通常用于在频域上调整FIR滤波器的频率响应,从而满足设计要求。不同的窗函数具有不同的频域特性,因此选择合适的窗函数可以产生所需的滤波器响应。
  • 窗函数可以控制滤波器的截止频率:FIR滤波器通常通过选择截止频率来滤除信号中的不需要的频率成分。窗函数可以控制滤波器的截止频率,使滤波器具有所需的通带和阻带特性。
  • 窗函数可以改善滤波器的性能:使用窗函数可以改善滤波器的幅度响应和相位响应的性能,从而减少滤波器的失真和波纹。

二、设计步骤

1)确定选用的窗函数
选择窗函数-要根据过度带宽和阻带最小衰减来选取合适的窗函数,本文以汉宁窗为例。

六种窗函数的基本参数
窗函数类型 旁瓣峰值/dB 过度带宽 阻带最小衰减/dB
矩形窗     -13 -21
三角窗 -25 -25
汉宁窗 -31 -44
汉明窗 -41 -53
布莱克曼窗 -57 -74
凯赛窗 -57 -80

本题目中的通带下截止频率为400Hz,阻带下截止频率为350Hz,因此,过度带宽B为(经过归一化处理)。通过计算可得到窗函数需要的阶数N为124阶。

2)构造希望逼近的频率响应函数,即

理想滤波器的上下截止频率近似位于最终设计的FIRBF的过渡带宽的中心频率点,幅度函数衰减一半(约-6dB)。截止频率一般取

3)计算。直接使用MATLAB中的fir1函数,hn=fir1(N-1,wc,hanning(N))注意:fir1函数默认选用hamming窗。

三、MATLAB实现代码如下

clc
clear
%% ****************************settings*****************************
fs=2000;                            %采样频率
fpl=400;fpu=500;                    %通带频率
fsl=350;fsu=550;                    %阻带频率
wpl=2*pi*fpl/fs;wpu=2*pi*fpu/fs;    %通带角频率(归一化)
wsl=2*pi*fsl/fs;wsu=2*pi*fsu/fs;    %阻带角频率
Bt=wpl-wsl;                         %过渡带带宽
N0=ceil(6.2*pi/Bt);                 %计算滤波器的阶数
wc=[(wpl+wsl)/2/pi,(wpu+wsu)/2/pi]; %计算理想带通滤波器截止频率
N=N0+mod(N0+1,2);                   %保证长度为奇数
f1=450;
f2=600;
T=1;                                %时宽1s
L=round(T*fs);                     %采样点个数%% *****************************filter settings**********************
n=0:N-1;
hn=fir1(N-1,wc,hanning(N));         %调用fir1计算带通滤波器的h(n)
[H,w]=freqz(hn,1,L);                %计算频率响应函数figure(1)
magH=20*log10(abs(H)/max(abs(H)));  %幅频响应
subplot(311);
stem(n,hn,'.');
xlabel('n');ylabel('h(n)');
title('汉宁窗FIR-BPF的单位脉冲响应');
subplot(312);
plot(w/pi*fs/2,magH);
title('汉宁窗FIR-BPF的幅频响应')
xlabel('频率/Hz');
ylabel('20lg|Hg(e^j^\omega)|/max(|Hg(e^j^\omega)|)');
grid on
subplot(313)
plot(w/pi*fs/2,unwrap(angle(H)));   %相频响应
title('汉宁窗FIR—BPF的相频响应')
xlabel('频率/Hz');
ylabel('相位/rad')
grid onfigure(2);
z=roots(hn);
zplane(z,[])
title('汉宁窗FIR-BPF的零极点分布图');
legend('零点','极点');
grid on;%% ******************************filter signals (time)**********************
dt=1/fs;
%t=0:dt:(L-1)*dt;
t=linspace(0,T,L);
x1=sin(2*pi*f1*t);
x2=sin(2*pi*f2*t);
x=x1+x2;
% y=filter(hn,1,x);
y=filtfilt(hn,1,x);% 解决滤波器时延
% y=conv(hn,x);figure(3);
subplot(411);
plot(t,x1);
title('450Hz正弦信号x1(t)');
xlabel('t/s');ylabel('x1(t)');subplot(412);
plot(t,x2);
xlabel('t/s');ylabel('x2(t)');
title('600Hz正弦信号x2(t)');subplot(413);
plot(t,x);
title('混合信号x(t)');
xlabel('t/s');ylabel('x(t)');subplot(414);
% t1=0:dt:(L+124-1)*dt;
plot(t,y);
xlabel('t/s');ylabel('y(t)');
title('滤波信号y(t)');%% ***************************filter signals (frequnecy)***********************
M=length(x);
X=abs(fftshift(fft(x./(L))));
x_fs=linspace(-fs/2,fs/2-1,L);
% x_fs=(0:M-1)*fs/M-fs/2;          %频率向量
Y=abs(fftshift(fft(y./(L))));figure(4);
subplot(211);
plot(x_fs,X);
xlabel('Frequency');
ylabel('Amplitude');
title('混合后信号频谱')
subplot(212);
plot(x_fs,Y);
xlabel('Frequency');
ylabel('Amplitude');
title('滤波后信号频谱')

四、结果分析

下图为MATLAB所绘制的频率响应图,我们可以从相频响应图中看到相位在通带范围内是线性。这是FIR滤波器的一大特点。

下图为FIR滤波器的零极点分布图,可看到大部分零点是在单位圆上的,少部分是在单位圆外的;FIR滤波器在原点z=0处是有N-1个极点,因此FIR滤波器是绝对稳定的。这也是FIR滤波器的一大特点。

下图是对450Hz正弦信号和600Hz正弦信号混合后的信号进行滤波,滤除了600Hz的信号,留下了450Hz的正弦信号。

下图是滤波前和滤波后的频谱图,可以直观的看出450Hz的信号被保留了下来。

五、关于吉布斯效应的分析

吉布斯效应:将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为吉布斯效应。

(1)在理想特性不连续点ωc附近形成过渡带。过滤带的宽度近似等于 WR(θ)主瓣宽度,Δω=4π/N

(2)通带内增加了波动,最大的峰值在ωc- 2π/N 处。阻带内产生了余振,最大的负峰在ωc+2π/N处。通带与阻带中波动的情况与窗函数的幅度谱有关。 WR(θ)波动愈快(加大时),通带与阻带内波动愈快, WR(θ)旁瓣的大小直接影响波动的大小。

这些影响是对hd(n)加矩形窗引起的,称之为吉布斯效应。 增加矩形窗口的宽度N不能减少吉布斯效应的影响。N的改变只能改变ω坐标的比例和  的绝对大小,不能改变主瓣和旁瓣幅度相对值。加大N并不是减少吉布斯效应的有效方法。寻找合适的窗函数形状,使其谱函数的主瓣包含更多的能量,相应旁瓣幅度就变小了;旁瓣的减少可使通带与阻带波动减少,从而加大阻带的衰减。但这样总是以加宽过渡带为代价的。

FIR带通滤波器汉宁窗设计法matlab仿真相关推荐

  1. c语言 汉宁窗,汉宁窗设计线性相位FIR低通数字滤波器.docx

    MACROBUTTON MTEditEquationSection2 SEQ MTEqn \r \h \* MERGEFORMAT SEQ MTSec \r 1 \h \* MERGEFORMAT S ...

  2. 五步移相法matlab程序_ZVZCS移相全桥变换器的设计与MATLAB仿真

    ZVZCS 移相全桥变换器的设计与 MATLAB 仿真 裴素萍 1 ,胡俊峰 2 ,韩 梁 1 [摘 要] 分析了一种大功率移相全桥开关电源( ZVZCS )原理,给出了主电 路主要器件选取和参数计算 ...

  3. matlab仿真冲激响应函数,无限冲激响应数字滤波器的设计与MATLAB仿真

    <工业控制计算机>2011 年第 24 卷第 10 期 本文针对 IIR 数字滤波器的特点, 根据相应的设计指标运用 MATLAB 软件开展了对数字滤波器的研究并对设计的滤波器实现了仿真以 ...

  4. 液位控制系统matlab仿真,模糊液位控制器的设计与MATLAB 仿真

    模糊液位控制器的设计与MATLAB 仿真 1 引言 在自动控制领域里,如果被控制对象是个比较复杂的非线性.时变而且又有大的滞后的系统的话,往往很难获得精确的数学模型,并且由于传统的经典控制方法是建立在 ...

  5. matlab交流调压调速课本,双闭环交流调速系统的设计及MATLAB仿真

    内容简介: 毕业设计 双闭环交流调速系统的设计及MATLAB仿真,共44页,17796字. 摘 要 本文首先介绍了交流调速系统的基本概况,并对MATLAB做了简单介绍.同时提出了本文所要研究解决的问题 ...

  6. 相量法matlab仿真编程,电力系统的MATLAB/SIMULINK仿真与应用 王晶,翁国庆,张有兵著 西安电子科技大学出版社 9787560620...

    商品描述: 基本信息 书名:电力系统的MATLAB/SIMULINK仿真与应用 原价:32.00元 作者:王晶,翁国庆,张有兵 编著 出版社:西安电子科技大学出版社 出版日期:2008-9-1 ISB ...

  7. 电机调速设计并用matlab仿真,终稿毕业论文设计_基于PWM控制的直流电动机调速系统设计及MATLAB仿真.doc最终版(备份存档)...

    <毕业论文_基于PWM控制的直流电动机调速系统设计及MATLAB仿真.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)毕业论文设计_基于PWM控制的直流电动机调速系统设计及M ...

  8. rbf神经网络matlab代码_【新书推荐】【2008.06】机器人控制系统的设计与MATLAB仿真(刘金琨)...

    本书系统地介绍了机器人控制的几种先进设计方法,是作者多年来从事机器人控制系统教学和科研工作的结晶,同时融入了国内外同行近年来所取得的最新成果. 全书以机器人为对象,共分10章,包括先进PID控制.神经 ...

  9. 基于Δ-Σ模数转换器的梳状滤波器的设计与matlab仿真

    欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 Δ-Σ模数转换器是一种低速,高精度 ...

最新文章

  1. java输入正数和负数并计算个数
  2. Windows 下安装 laravel框架
  3. 查看Python函数含义的快速,准确方法unique
  4. php curl post text,php – POST适用于Postman,但不适用于CURL
  5. java自动推送百度收录_站点添加百度自动推送和360自动推送代码,让收录更快!...
  6. Google Code Jam
  7. Windows 10安装AD远程服务器管理工具
  8. 施一公 - 清华讲座
  9. Oracle查询某一天数据的SQL语句的几种写法
  10. SVN服务器迁移方法(Windows环境)
  11. 软著申请材料,软著申请文件,软著登记材料,软著登记文件
  12. error: Failed dependencies: mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-commu
  13. 《算法》读书笔记(一)
  14. 商城口碑颜值双高蓝牙耳机推荐,双11蓝牙耳机选购品牌排行榜
  15. iOS 网络优化: 使你的 App 网络交互更流畅
  16. Java Web学习笔记
  17. Parallel Platform (Stewart Platform) 类型机械臂的正逆解 01
  18. 《道德经》第五十三章
  19. Linux高并发服务器开发---笔记4(网络编程)
  20. 学习笔记:秒懂频分多址FDMA、时分多址TDMA、码分多址CDMA、空分多址SDMA

热门文章

  1. android img 格式文件怎么打开,img文件怎么打开(如何解析system.img)
  2. 邓丽君逝世19周年 罕见婉约迷人私房照曝光
  3. 判刑了继续上诉有用吗_刑事判决书下来上诉的话上诉费多少?刑事案件判刑了上诉有用吗?...
  4. 软件测试:用“bug”来表示“在电脑程序里的错误”
  5. AI 机器人没有未来了
  6. 提取前景目标的最小外接圆和最小外界矩形
  7. CodeForces-691E Xor-sequences(矩阵快速幂)
  8. java 短信配置模板${}如何动态设置
  9. iptables tc限速笔记
  10. 电子电路基础——笔记