Gammatone滤波器组

一、实验目的

实现一个Gammatone滤波器组,要求用FIR和IIR两种方式。利用ERB或者Bark尺度,自行确定滤波器组的中心频率和频带个数。不允许使用Matlab或者Python库中提供的现成Gammatone函数。报告中除了思路分析,还要给出滤波器组的频响图。

二、实验原理

1、临界频带—滤波器解释

基底膜的作用相当于很多频率响应交叠的带通滤波器或一个带通滤波器组。临界频带可看成是滤波器组中的一个带通滤波器的带宽。

2、听觉滤波器建模-Gammatone滤波器

Gammatone滤波器描述猫的听觉神经冲激响应特性,冲激响应表达如下

 

冲激响应是由一个Gamma函数和纯音信号合成,因而得名GammaTone。因为其表达式是冲激响应函数,所以直接FFT就得到频响曲线。下图分别是其冲激响应和幅频曲线。公式中,a=1,b=1.019*ERB(f),ERB在此处是GT滤波器的等效带宽,n为滤波器的阶数。

三、实验步骤

Fir型Gammatone滤波器

计算ERB尺度下的所有中心频率点,每个频率点处的滤波器的冲激响应是g,再用fir2拟合,循环得到多个滤波器

%Gammatone滤波器?
clear;
clc;
clf;
a=1;
n=4;%阶数
t=[0:0.0005:100];
for i=1:10
F=((10.^(i./21.366))-1)./0.004368;%ERB尺度和线性频率之间的转换
b=1.019*(6.23*(F.^2/((1000)^2))+93.39*F/1000+28.52);%b=1.019*ERB(f)
g=(a.*t.^(n-1)).*exp(-2*pi*b.*t).*cos(2*pi*F.*t);%Gammatone滤波器冲激响应
G(i,:)=g;
[h,w] = freqz(g,1,1024);%求解滤波器冲激响应
n1=100;%fir2滤波器阶数
[f,~]=mapminmax(w',0,1);%归一化
d=fir2(n1,f,abs(h'));%已知频响的fir2滤波器
D(i,:)=d;
[h1,w1]=freqz(d,1,1024);%求解滤波器频率响应
figure(1);
hold on;
plot(w/pi,20*log10(abs(h)));
title('Gammatone滤波器频率响应');
figure(2);
hold on;
plot(w1/pi,20*log10(abs(h1)));
title('FIR型Gammatone滤波器频率响应');
end

四、实验结果

 

五、结果分析

振动包络为被余弦函数调制的Gamma函数曲线;频率越高,达到最大振幅的时间也越短;不同频率不同带宽;两侧较陡

优点:参数少,3个;阶数小,4阶足以描述听觉滤波器;有冲激响应函数

缺点:对称;没有强度参数,频响和强度无关

评述:在此基础上,只用头10个ERB尺度,规避了ERB尺度上限超出奈奎斯特频率的错误;没有基于yulewalk的IIR实现。

猜你喜欢

转载自blog.csdn.net/weixin_47546087/article/details/126633506