信号的时域处理

一、要求

选择子作业1中的音频信号,自行给定滤波器的系统函数,分别采用时域线性卷积差分方程两种方法对音频信号进行滤波处理,比较滤波前后信号的波形和回放的效果。

二、实现思路

1.时域卷积法

  • 分析原始音频信号的频谱,观察有用信号和噪声的分布,选择滤波器类型(低通、高通、带通、带阻等)

  • 设定幅频响应下降三分贝的截止频率和滤波器阶数

  • 选择合适的窗函数(包括Rectangular、Hanning、Hamming、Bartlett、Blackman、Kaiser、Gaussian、Flat-top等)

  • 计算滤波器系数(滤波器的单位脉冲响应)

  • 将滤波器系数与原始信号卷积进行滤波

2.差分方程法

  • 分析原始音频信号的频谱,观察有用信号和噪声的分布,选择滤波器类型(低通、高通、带通、带阻等)
  • 设置通带截止频率和阻带截止频率并归一化,设定通带纹波系数和阻带衰减系数
  • 求出切比雪夫滤波器的阶数和下降3分贝通带截止频率
  • 计算滤波器的差分方程系数
  • 调用filter函数对原始信号进行滤波

三、实现过程

滤波前后对比图

FIR hamming窗低通滤波器前后对比图

IIR 切比雪夫低通滤波器前后对比图

1.时域卷积

首先导入原始音频信号并画出时域图和幅频响应曲线,分析其频谱分布,代码如下所示。

%% 数据导入及参数设置
[x,Fs]=audioread('D:\数据\Carmen_overture_noisy_8k_9.5k.wav');
Nx=length(x);
tx=(0:Nx-1)/Fs;%时域范围
df=Fs/length(tx); %计算谱线间隔
fx=tx*df;%频域范围
X=FFT(x,Nx,Fs,tx);%快速傅里叶变换
fx=(fx*Fs)/1e3;%只显示正频谱
X=abs(X);
% 绘出时域图和幅频响应
figure;
subplot(221)
plot(tx,x);
title("原信号音频时域图");
xlabel("t/s");
subplot(222)
% plot(fx*Fs/1e3,abs(X),"blue")
plot(fx(1,1:ceil(Nx/2)),X(1:ceil(Nx/2),1),'b')
title("原信号音频相频响应");
xlabel("f/Khz");

观察其幅频响应发现有用信号的频率在8Khz以下,以上则为能量较大的高频噪声,因此我采用低通滤波器对其进行滤波。

FIR滤波器

设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N-1,则滤波器的系统函数为:
H(z)=∑k=0N−1h(k)∗z−kH(\mathrm{z})=\sum_{k=0}^{N-1}h(\mathrm{k})*\mathrm{z}^{-k} H(z)=k=0∑N−1​h(k)∗z−k
直接型FIR滤波器的差分方程为:
y(n)=∑m=0N−1h(m)x(n−m)\mathrm{y(n)}=\sum_{m=0}^{N-1}\mathrm{h(m)x(n-m)} y(n)=m=0∑N−1​h(m)x(n−m)
由差分方程可知只需要求出FIR滤波器的单位冲激响应h(n),设置滤波阶数3db通带截止频率fc,采用汉林窗函数处理,再使用fir1函数将其与待滤波信号卷积即可完成滤波,具体实现代码如下。

%% hamming窗低通滤波器滤除高频噪声
fc=7.95e3; %下降3分贝截止频率
h_n=fir1(1000,fc*2/Fs,"low");
y=conv(h_n,x);Ny=length(y);%滤波后信号的长度
ty=(0:Ny-1)/Fs;%时域范围
Y=FFT(y,Ny,Fs,ty);%快速傅里叶变换求频谱
df=Fs/length(ty); %计算谱线间隔
fy=ty*df;%频域范围
fy=(fy*Fs)/1e3;%只显示正频谱
Y=abs(Y);
% 绘出滤波后的时域图和幅频响应
subplot(223)
plot(ty,y,"g");
title("滤波后信号音频时域图");
xlabel("t/s");
subplot(224)
stem(fx(1,1:ceil(Ny/2)),Y(1:ceil(Ny/2),1),'c','.')
title("滤波后信号音频相频响应");
xlabel("f/Khz");
%% 试听及保存
% sound(y,Fs);
audiowrite("D:\数据\FIRfilter.wav",y,Fs);
%% 快速傅里叶变换函数
function FourierTransform = FFT(signal,N,fs,t)
Y=fft(signal,N);
df=fs/length(t); %计算谱线间隔
f=t*df;%频域范围
Ys=abs(Y); %幅度响应
FourierTransform=Ys;
end

FIR滤波器的单位冲激响应如下图所示:

通过时域卷积得到滤波后的结果如下图所示:

由图可知,发现经过1000阶的3分贝截止频率为7.95e3Khz的低通滤波器处理后,8Khz及以上的高频噪声基本被完全滤除,成功从原始音频信号中提取到有用信号。

2.差分方程

首先也是先对原始音频信号做傅里叶变换分析其频谱,频谱结果同上,这里不在赘述。

IIR切比雪夫低通滤波

IIR(infinite impulse response)滤波器,无限冲激响应滤波器,IIR滤波器定义如下:
∑l=0Na(l)y(n−l)=∑k=0Mb(k)x(n−k)\sum_{l=0}^{N}a(l)y(n-l)= \sum _{k=0}^{M}b(k)x(n-k) l=0∑N​a(l)y(n−l)=k=0∑M​b(k)x(n−k)
令a(0)=1,a(l),l=1,2,...Na(0)=1,a(l),l=1,2,...Na(0)=1,a(l),l=1,2,...N取反后得:
y(n)=∑k=0Mb(k)x(n−k)+∑l=1Na(l)y(n−l)y(n)= \sum _{k=0}^{M}b(k)x(n-k)+ \sum _{l=1}^{N}a(l)y(n-l) y(n)=k=0∑M​b(k)x(n−k)+l=1∑N​a(l)y(n−l)
IIR直接II型滤波器的流程框图如下所示:

根据流程框图可知,需要求得差分方程系数向量a和b,这里我采用常见的切比雪夫滤波器设定通带频率、阻带频率以及纹波系数衰减系数计算出系数a和b,再利用filter函数传入系数a、b和待滤波信号即可完成滤波,采用如下代码实现差分方程法实现IIR切比雪夫低通滤波器。

%% IIR-Chebyshev低通滤波器滤除高频噪声
Wp=7.6e3*2/Fs;%通带频率
Ws=8e3*2/Fs;%阻带频率
[n,Wc]=cheb1ord(Wp,Ws,2,40);%计算阶数和3db通带截止频率
[b,a]=cheby1(n,3,Wc);%切比雪夫滤波器返回差分方程系数
freqz(b,a);%绘出滤波器频谱图(幅频响应和相频响应)
y=filter(b,a,x);%滤除高频噪声
Y=FFT(y,N,Fs,t);
Y=fftshift(Y);
Y=abs(Y);
% 绘出滤波后的时域图和幅频响应
subplot(223)
plot(t,y,'b');
title("滤波后信号音频时域图");
xlabel("t/s");
subplot(224)
% plot(f*Fs/1e3,Y,'k');
plot(f(1,ceil(N/2):end),Y(ceil(N/2):end,1),'g')
title("滤波后信号音频幅频响应");
xlabel("f/Khz");

IIR切比雪夫滤波器的归一化频谱图如下所示:

观察发现其幅频响应滤波效果比较好,根据此滤波器对原始音频信号进行滤波,下图展示了滤波后的结果。

由图可知8Khz及以上的高频噪声被滤除,但原始信号靠近8Khz的部分幅值也有所衰减但影响不大,从而实现了对有用信号的提取。

四、结果分析

  1. 时域线性卷积法和差分方程法都是实现数字滤波的两种方法,都可以很好的滤除有用信号的噪声,从而提取出有用的信号,排除无用信号的干扰。

  2. 实际观察发现随着滤波器的阶数的升高,滤波器的频率响应越接近理想滤波器,而要想实现同样滤波效果,差分方程法的滤波器阶数远小于时域卷积法的阶数。

  3. 当使用IIR滤波器时,由于IIR滤波器的存在系统稳定性问题,因此当滤波器阶数过高时会导致系统不稳定,从而失去正常滤波能力。

  4. 将IIR巴特沃斯滤波与切比雪夫滤波器对比,发现切比雪夫滤波器的滤波效果更好,频谱对比图如下。

切比雪夫滤波后的信号频谱图

巴特沃斯滤波后的信号频谱图

如果需要程序源代码在此,点击即可下载

FIR滤波器和IIR滤波器相关推荐

  1. 简谈FIR滤波器和IIR滤波器的区别

    最近总是遇到很多大侠在问滤波器相关的问题,之前对这一方面接触不是很多,最近也是在学习一些这方面的知识,今天先和大侠简单聊一聊FIR滤波器和IIR滤波器的区别,后续等研究的差不多了,再更新有关滤波器的详 ...

  2. 【收藏】详解FIR滤波器和IIR滤波器的区别

    数字滤波器广泛应用于硬件电路设计,一般分为FIR滤波器和IIR滤波器.那么FIR滤波器和IIR滤波器有什么区别呢?本文通过几个例子做一个简单的总结. 一.FIR滤波器 定义: FIR滤波器是有限长单位 ...

  3. 详解FIR滤波器和IIR滤波器的区别

    数字滤波器广泛应用于硬件电路设计,一般分为FIR滤波器和IIR滤波器.下面说一下它的具体区别 一.FIR滤波器 定义: FIR滤波器是有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统 ...

  4. FIR滤波器和IIR滤波器区别

    本文总结了FIR滤波器和IIR滤波器的原理和区别 保研夏令营的时候复习到了,但其实还有些地方没有完全弄通. 这里主要是介绍如何构造数字滤波器. 滤波器的表示 非递归(有限脉冲响应滤波器):输出仅依赖于 ...

  5. FIR滤波器与IIR滤波器

    FIR和IIR滤波器的一个主要区别:FIR是线性相位,IIR为非线性相位(双线性变换法),对于非线性相位会造成的影响,可以这样考虑:对于输入的不同频率分量,造成的相位差与频率不成正比,则输出时不同频率 ...

  6. FIR滤波器和IIR滤波器的区别和选择

    1. 在相同技术指标下,IIR滤波器由于存在着输出对输入的反馈,因而可用比FIR滤波器较少的阶数来满足指标的要求,这样一来所用的存储单元少,运算次数少,较为经济.例如用频率抽样法设计阻带衰减为-20d ...

  7. fir 滤波参数的含义_详解FIR滤波器与IIR滤波器的具体区别

    姓名:高新诚       学号:17021223282 原文链接:http://mp.weixin.qq.com/s/tC_mdXIeusuggDV1tn3sOw [嵌牛导读]:在大学中学习到了FIR ...

  8. FPGA数字信号处理(七)级联型IIR滤波器Verilog设计

    该篇是FPGA数字信号处理的第七篇,上一篇介绍了直接型IIR滤波器的原理,详细介绍使用Verilog HDL设计直接型IIR滤波器的方法.本文会介绍如何用Verilog HDL设计级联型IIR滤波器. ...

  9. 利用Matlab比较IIR和FIR,细说IIR滤波器和FIR滤波器的区别

    1.两种滤波器都是数字滤波器.根据冲激响应的不同,将数字滤波器分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器.对于FIR滤波器,冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的 ...

  10. FIR IIR滤波器的设计

    FIR:有限脉冲响应滤波器.有限说明其脉冲响应是有限的.与IIR相比,它具有线性相位.容易设计的优点.这也就说明,IIR滤波器具有相位不线性,不容易设计的缺点.而另一方面,IIR却拥有FIR所不具有的 ...

最新文章

  1. Python开发基础总结(三)排序+迭代+生成器+装饰器
  2. 2018年全球AI突破性技术TOP10
  3. .net中日至框架log4net.dll如何使用
  4. RAD Studio XE2/XE3 官方 ISO 下载地址 (2012-09-05更新)
  5. python更新_MacOS升级python版本
  6. 查看S/N提示'wmic' 不是内部或外部命令,也不是可运行的程序 或批处理文件。的解决办法(不添加环境变量版
  7. mssql 查询无记录时sum_SQL常见面试题查询
  8. mysql中alter语句卡死的一个解决方法
  9. call to a member funciton get() on null
  10. yii2基础之分页的基本使用及其配置详解
  11. 数据结构试卷及答案(九)
  12. SqlParameter防SQL注入的方法
  13. 如何购买腾讯云学生服务器
  14. Mobile-Former: Bridging MobileNet and Transformer 新的网络结构
  15. Regular DLL
  16. linux 下部署tomcat问题
  17. Linux系统命令行常识问答2
  18. gateway官网文档解读(六) 汇总
  19. win10 UWP 你写我读
  20. 最新基于LBS的毕业设计题目

热门文章

  1. 尼康单反AF自动对焦模式与AF区域模式详解
  2. crio电压采集 labview_LabVIEW与cRIO入门.pdf
  3. 极通EWEBS V5.0打破了远程计入市场的宁静!
  4. 笔记1-fedora14初识及vmware-tool安装
  5. 任务管理三部曲 - 模板使用说明(超实用模板下载)
  6. 回声消除原理(AEC)
  7. 知到计算机应用基础见面课答案,知到计算机应用基础(湖南环境生物职业技术学院)见面课答案...
  8. 【Python纪念册】哪些浪漫至极的表白程序—“你做我的男孩,我做你的宇宙”
  9. 同r做一个窗口_数据无价,关注硬盘健康状况群晖NAS如何做硬盘坏道检测
  10. 科技文献检索系统的详细分类介绍 - 易智编译EaseEditing