1、IIR数字滤波器的原理介绍

所谓IIR数字滤波器,是指输入、输出均为数字信号,通过数值运算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序[1]。

按照不同的分类方法,可以分成经典滤波器和现代滤波器两大类,经典滤波器的特点是指在输入信号的有用频率成分和希望滤除信号的频率成分占有不同的频带的情况下滤出纯净信号,而现代滤波器的特点则是在输入信号的有用频率成分和希望滤除信号的频率成分存在混叠的情况下最大限度地恢复信号。

按照滤波特性及滤波频带范围来分类,又可以分为低通、高通、带通和带阻等滤波器,他们的理想幅频特性是还原相应频带的信号,消除其他频带的信号。

因为理想滤波器的单位脉冲响应均是非因果且无限长的,这些理想滤波器是不可能实现的,又因为考虑到复杂性与成本问题,我们只能按照某些准则去逼近理想滤波器,允许通带不是完全水平,且阻带不是绝对衰减到零,在通带和阻带之间还存在着幅频特性单调下降的过渡带。

因为逼近效果的不同,我们使用一些技术指标来描述相应数字滤波器的逼近效果:ωP 为通带的边界截止频率,表示通带的频率范围为0≤ωωPωs 为阻带的边界截止频率,表示阻带的频率范围为ωsω≤παP 表示通带内允许的最大衰减,其定义式为

表示阻带内允许的最小衰减,其定义式为

设定好相应的技术指标之后,便可根据技术指标来进行相应滤波器的设计,IIR滤波器的设计方法有间接法和直接法两种,间接法是借助于模拟滤波器的设计方法进行的,而直接法则是直接在频域或者时域中设计数字滤波器。

因为模拟滤波器的设计方法已经很成熟,不仅有完整的设计公式,还有完整的图表和曲线供查阅;另外,还有一些典型的优良滤波器类型可供我们使用,本文所采用的算法则是运用IIR滤波器的间接设计办法,并通过双线性不变法来进行模拟滤波器到数字滤波器的转化。

本文所用算法思路为先将数字技术指标转化为模拟技术指标,根据技术指标得到巴特沃斯滤波器的阶数N与3db截止频率 ,再根据阶数N与3db截止频率 按照巴特沃斯滤波器的算法算得系统函数 的系数,来得到确定的 公式,再通过双线性不变法的转换式来完成模拟滤波器到数字滤波器 的转换,转换式为

2、IIR数字滤波器的应用

①脉诊技术一直是中医重要的诊断手段,脉搏信号中拥有丰富的人体生理和病理特征,而新时代的脉搏分析则不再借助人工,而是通过脉搏检测仪器来分析脉搏信息,但脉搏的有效信息极易受到仪器和人体等方面的影响,这些干扰对分析极不利,所以需要借助IIR滤波器来滤掉干扰信号,因为IIR滤波器相较于FIR数字滤波器,系数更少,运算效率更高[2]。

脉搏的有效信号频率为1-20Hz,干扰信号频率为0-1Hz和20Hz以上,通过高通与低通滤波器级联的方式来进行滤波。最后实验结果表明通过高通滤波器后,0-1Hz范围内的干扰信号得到了有效的衰减,再通过低通滤波器,20Hz以上的干扰信号也得到了抑制,使得最后输出的脉搏信号较为接近实际人体脉搏信号[3]。

②随着电力电子技术的飞速发展,越来越多的非线性电子设备和间歇性新能源接入电网,使得电网产生大量的谐波电流和谐波电压,谐波会严重降低电能质量。而谐波通常被分为谐波、间谐波和次谐波三类,都与基波频率不在一个频带范围内,可通过带通滤波器来完成谐波的滤波,保障基波传输的质量,对于相位要求较高的场合,则可在滤波器后加入一个相位校准网络[4]。

③人耳对响度相同、频率成分不同的声音产生不同的听觉感受,为了模拟人耳的听觉特性,可在声级器中加入频率计权网络修正声音信号,使得声级器对不同频率信号有着类似于人耳的灵敏度[5],双线性变换法IIR滤波器则可完成频率计权网络的设计,采用在同化阶段加入混沌函数以及帝国竞争阶段引入克隆进化算子,能保持不同声信号级的计权误差能维持在 db的数量级范围内,符合1级声级计设计要求[6]。

④随着机扫雷达目标测向能力的不断提升, 对伺服控制系统中电机转速的稳态精度提出了更高的要求。伺服电机一般采用数字控制方式, 通过对旋转变压器等位置传感器检测的电机转子位置进行差分来计算电机的转速[7]。但因为位置传感器的分辨率有限,经过直接差分得到的电机转速受传感器量化误差的影响会出现极大的噪声,所以需要研究合适的滤波方法来削弱这种转速噪声影响。因椭圆滤波器幅频响应在通带和阻带都是等波纹的,能得到相较于其他滤波器更窄的过渡带宽,且一般情况下,椭圆滤波器能以最低的阶数实现指定的性能指标;在电机的应用场所中,应用椭圆滤波器后,转速响应在动态部分有1.05%的超调       ,上升时间为27ms,这在可以接受的范围内;稳态部分转速均匀,误差部分也仅仅为-10.44至10.32r/min,即稳态精度为-0.43%至0.43,与滤波前相比提高了0.5%,加入椭圆滤波器提高了电机转速的稳态性能[8]。

⑤砌块成型机是一种利用周期振动将不同比例的粘结性材料和水搅拌成干硬性混凝土,再经振动压实将混凝土加工成砌块的专用设备。砌块成型机性能主要体现在振台,目前砌块机上应用最多的是机械式振台,机械式振动主要由激振器和减振器组成,振台振动情况好坏对砌块的硬度、高度等影响很大。而对振台振动信号进行滤波是一个非常重要的环节,只有经过滤波才能从混杂的振动信号中分离出期望信号。

砌块成型机工作频率在62Hz左右,由于测试机型结构复杂和装配的误差会产生低频干扰,而由传感器采集的噪声通常会出现在高频部分,所以运用MATLAB来设计巴特沃斯滤波器,设计通带为58-66Hz,在20Hz以下和100Hz以上,衰减率均大于20dB,可以成功滤除干扰信号[9]。

3、IIR数字滤波器语音滤波程序设计

3.1 程序原理阐述

filename = 'myname.wav';
[y,fs] = audioread(filename); % read audio from file, return sample data y and sampling rate fs sound(y,fs); % play the audio%% show the time domain waveform of the original signal
N = length(y); % number of samples
time = 1/fs * (0:N-1); % 1/fs is sample interval
figure(1)
subplot(4,2,1);
plot(time,y);
title('Time domain waveform of original signal');
grid on;
xlabel('Time/s');
ylabel('Amplitude');%% show the frequency domain waveform of the original signal
y_FFT = fft(y,N); % returns the n-point DFT
f_p = fs / N * (0:N/2-1);
subplot(4,2,2);
plot(f_p,y_FFT(1:N/2));
title('Frequency domain waveform of original signal');
grid on;
xlabel('f/Hz');
ylabel('X(f)');%% add noise
noise = 0.02 * randn(N,1); % generate random noise of equal length
y_mix = y + noise; % mix original audio and noisepause(8);
sound(y_mix,fs); % play the audio + noise
%% show the time doma in waveform of the mixed signal
subplot(4,2,3);
plot(time,y_mix);
title('The waveform of mixed signal');
grid on;
xlabel('Time/s');
ylabel('Amplitude');%% show the frequency domain waveform of the mixed signal
y_mix_FFT = fft(y_mix,N);
subplot(4,2,4);
plot(f_p,y_mix_FFT(1:N/2));
title('Frequency domain waveform of mixed signal');
grid on;
xlabel('f/Hz');
ylabel('X(f)');%% digital low-pass technical index
Ft = fs / N;
Fp = 7100 * Ft;
Fs = 7700 * Ft;
Wp = 2 * pi * Fp;%通带数字截止频率
Ws = 2 * pi * Fs;%阻带数字截止频率
wp = Wp / fs;
ws = Ws / fs;
alpha_p = 3;%通带最大衰减
alpha_s = 6;%阻带最小衰减%% analog low-pass technical index
T = 1;
omega_p = 2/T * tan(wp / 2);%通带模拟截止频率
omega_s = 2/T * tan(ws / 2);%阻带模拟截止频率%% design analog filter
[n_order,wc] = buttord(omega_p,omega_s,alpha_p,alpha_s,'s'); % wc : 3dB cut-off frequency
[B,A] = butter(n_order,wc,'s');%% convert to digital filter
[Bz,Az] = bilinear(B,A,1/T);
[Hz,wk] = freqz(Bz,Az,N);%% show filter
subplot(4,2,5);
plot(wk,abs(Hz));
%plot(wk/pi,20*log10(abs(Hz)));
grid on;
xlabel('\omega/\pi');
ylabel('Amplitude(dB)');
%axis([0,1,-100,5]);
title('filter');%% filter out the noise
y_filt = filter(Bz,Az,y_mix);pause(8);
sound(y_filt,fs); % play the filted audio%% show the time domain waveform after filter
subplot(4,2,7);
plot(time,y_filt);
title('The filted mixed signal');
grid on;
xlabel('Time/s');
ylabel('Amplitude');%% show the frequency domain waveform after filter
y_filt_FFT = fft(y_filt,N);
subplot(4,2,8);
plot(f_p,y_filt_FFT(1:N/2));
title('Frequency domain waveform of filted mixed signal');
grid on;
xlabel('f/Hz');
ylabel('X(f)');

图1 程序代码

①原始音频采集与播放:先通过audioread(‘myname.wav’)函数对与matlab放在同一个文件夹的.wav音频文件进行模拟信号的数据采集,将采集到的数据样本赋值到y中,采样率赋值到fs中,并通过sound(y,fs)进行采集到的未处理信号的原速播放[10]。

②原始信号的时域分析:将采样频率根据数据样本的抽样点数进行归一化建模进行时域分析。

③原始信号的频域分析:将原始信号运用fft(y)函数进行傅里叶转换,并根据抽样点数进行频率的归一化转换,运用一半的频点进行频域的建模。

④加噪处理与播放:根据数据样本y的维度,通过randn(N,1)函数创造一个N×1的随机矩阵噪声,并加到数据样本y之中,再通过sound(y_mix,fs)进行加噪信号的播放。

⑤加噪信号的时频分析:按照原始信号的建模方法对混合信号的时域和频域建模。

⑥过渡模拟滤波器设计:根据原始信号的时频谱波形,设置通带截止频率、阻带截止频率、通带最大衰减以及阻带最小衰减指标的设定,并通过双线性变换法将数字频率转换为模拟频率;根据技术指标,通过butter()函数得到阶数与3db截止频率,并根据阶数与3db截止频率得到模拟滤波器系统函数的系数。

⑦数字模拟滤波器的转化:通过bilinear()函数将模拟滤波器的系数通过双线性变换法转换为数字滤波器的参数,再通过freqz()函数将数字滤波器系统函数的系数转化为数字滤波器的N点频率响应,并绘图观察。

⑧滤波后信号的播放与分析:通过filter()函数将加噪信号代入数字滤波器的系统函数完成滤波,得到滤波后的信号并播放倾听滤波效果,最后按照原始信号的建模方法进行时域和频域的建模分析[11]。

4、学习总结

①Matlab中的噪声矩阵维度需要与样本数据的矩阵维度一致,在范例程序中的是N×2的矩阵数据,而自己录的声音是N×1的矩阵数据。

②没有一个完美的技术指标是能让每一个输入信号都得到非常好的滤波效果的,设计技术指标必须根据原始信号的时频特性来设计,从而能够得到相应信号的相对有效的滤波器。

③低通滤波器是高通、带通和带阻滤波器的基础,现实应用中总是先通过设计低通滤波器,再通过频率变换将低通滤波器转换为相应的滤波器。

④IIR滤波器在相同的带宽要求下,阶次低于FIR滤波器,电路更简单,运算量较小,拥有更高的选频特性,能广泛应用于高选频、低延迟以及快速处理领域,但是必须基于相位的非线性之上,在相位要求较高的场所,可在IIR滤波器后加入相位校准网络。

参考文献

[1]高西全、丁玉美.数字信号处理(第四版)[M].西安:西安电子科技大学出版社,2016

[2]汪依帆,王敏,李海龙.基于 MATLAB 的 IIR 数字滤波器设计研究[J].数字通信世界,2019(8):104.

[3]文胜福、王硕、魏宇豪、王浩.基于IIR数字滤波器的人体脉搏信号分析[A].重庆:重庆邮电大学,2020

[4]潘一飞,王家琪,陈波. 电力系统谐波检测中数字滤波器的设计[A].河北:华北理工大学,2020

[5]ANSI Sl.42 -2001 Design response of weighting networks foracoustical measurements[S]. New York:Acoustical Society of America,2001.

[6]唐求,吴娟,邱伟,沈洁,滕召胜. 基于 MICA 的声级计频率计权数字 IIR 滤波器设计[A].湖南:湖南大学,2020

[7]Sheng-Ming Yang, Shuenn-Jenn Ke.Performance Evaluation of a Veloci ty Observer for Accurate Velocity Esti mation of Servo Motor Drives[J].IEEE Trans.On Industrial Aplications, 2000, 36 (1) :98-104

[8]杜仁慧,陶春荣,张伟,施永柱.IIR数字滤波器在电机转速测量中的应用[J].雷达与对抗,2017,37(02):64-68.

[9]邢子龙,闫利文,杨振峰,赵小超.IIR数字滤波器在砌块成型机振动信号滤波中的应用[J].现代机械,2015(06):53-55.

[10]林竞连. IIR滤波器的分析及音频提取[A].西北:西北民族大学,2021

[11] Jorwnpay. matlab给音频信号加噪并设计IIR滤波器滤去噪声[EB/OL].(2019-11-8). matlab给音频信号加噪并设计IIR滤波器滤去噪声_Jorwnpay的博客-CSDN博客

IIR数字滤波器原理与应用相关推荐

  1. Matlab | 数字信号处理:双线性变换法设计IIR数字滤波器

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

  2. matlab调用mstg,实验五 双线性变换法设计IIR数字滤波器

    实验五 IIR 数字滤波器设计 一.实验目的 (1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法: (2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器,学会根 ...

  3. IIR数字滤波器的设计及应用——MATLAB

    一.实验目的 (1)熟悉双线性变换法和双重映射法设计IIR数字滤波器的原理与方法. (2)掌握IIR数字滤波器的MATLAB实现方法设计各种滤波器. (3)观察分析滤波器输入输出数据波形,理解数字滤波 ...

  4. IIR 数字滤波器三种结构形式的MATLAB实现

    一.实验目的 1. 掌握IIR 数字滤波器设计的方法: 2. 掌握IIR 数字滤波器直接型.级联型和并联型的基本特点并根据给定的传递函数形式正 确选择是否采用直接型.级联型和并联型. 3. 熟悉直接型 ...

  5. matlab 冲激响应不变法,matlab实验七 冲激响应不变法IIR数字滤波器设计

    (数字信号处理)实验报告 实验名称 实验七 冲激响应不变法IIR 数字滤波器设计 实验时间 年 月 日 专业班级 学 号 姓 名 成 绩 教师评语: 一.实验目的 1.掌握构成一个频率响应与给定的滤波 ...

  6. matlab 冲激响应不变法,matlab实验七冲激响应不变法IIR数字滤波器设计.doc

    (数字信号处理)实验报告 实验名称 实验七 冲激响应不变法IIR数字滤波器设计 实验时间 年 月 日 专业班级 学 号 姓 名 成 绩 教师评语: 一.实验目的 1.掌握构成一个频率响应与给定的滤波特 ...

  7. matlab冲激响应不变发,matlab实验七冲激响应不变法IIR数字滤波器设计

    matlab实验七冲激响应不变法IIR数字滤波器设计 (数字信号处理)实验报告实验名称 实验七 冲激响应不变法IIR数字滤波器设计 实验时间 年 月 日专业班级 学 号 姓 名 成 绩 教师评语: 一 ...

  8. 经典IIR数字滤波器设计一般步骤的总结

    基于Butterworth模拟LPF进行经典IIR数字滤波器一般设计的步骤总结   趁着这两天刚考完试,DSP忘掉的东西还不多,赶紧写篇note记录一下自己总结的经典IIR数字滤波器的一般设计流程. ...

  9. IIR数字滤波器设计(数字信号处理)

    ~~ 如果有什么问题可以在我的个人博客留言 ,我会及时回复.欢迎来访交流 ~~ IIR数字滤波器设计(数字信号处理) 一.实验目的 1.熟悉双线性变换法设计IIR数字滤波器的原理与方法. 2.掌握II ...

最新文章

  1. 【控制】《多无人机协同控制技术》周伟老师-第3章-面向协同控制的无人机单机控制
  2. 公司用云桌面还是台式计算机好,相比于性能更强的台式机为什么很多企业更喜欢用云桌面...
  3. 职业教育计算机课教学反思,关于高职计算机基础课的教学反思.doc
  4. zeppelin的安装与使用
  5. 建立openstack quantum开发环境 .
  6. Java 程序连接 Informix 数据库方法实例介绍
  7. 仅 1 年 GitHub Star 数翻倍,Flink 做了什么?
  8. iphone4s上市时间_iPhone 4S才是真正意义上的王者, 网友: 现在依旧能打
  9. 马尔可夫过程及其例题分析
  10. G29Prescan半实物仿真流程
  11. dos命令move 移动文件
  12. STM32:I2S驱动WM8978
  13. 成都百知教育关于Shopee 平台政策规则解读!
  14. 卧槽!逆天了,Python竟然能打造一款扫描全能王,实现图片纠正!
  15. Building Worlds In Unreal 学习笔记——20-23 程序化植被/草Billboard材质/实时虚拟纹理(RVT)的使用
  16. 获取当前的格林尼治时间
  17. 企鲸客scrm 渠道活码功能介绍及作用
  18. linux chmod 777 dev,linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思
  19. AD根据已有的PCB封装链接至原理图
  20. 图解Go语言内存分配 https://juejin.im/post/5c888a79e51d456ed11955a8

热门文章

  1. Docker入门实战---修改Docker镜像源
  2. Redis TTL说明
  3. iOS面试题(二十五)多线程 --NSOperation和NSOperationQueueNSThread锁机制
  4. C# Contract诊断
  5. 数据库,计算机网络、操作系统刷题笔记20
  6. 【java学习】JDK(Java Development Kit)
  7. Android :高德地图demo
  8. 如何使用STM32和BLE收集SHT85传感器数据?
  9. Animate.css的使用(基本使用附css文件下载地址)
  10. 求三角形面积 ← 海伦公式