gammatone滤波器组matlab代码
时间: 2023-07-09 09:17:01 浏览: 191
以下是一个简单的Gammatone滤波器组的MATLAB代码:
```matlab
function G = gammatoneFilterBank(fs, n, lowFreq, highFreq)
% fs: 采样率
% n: 滤波器数量
% lowFreq: 最低频率
% highFreq: 最高频率
f = linspace(lowFreq, highFreq, n); % 均匀分布的中心频率
ERB = 24.7*(4.37*f/1000+1); % 等效矩形带宽
B = 1.019*2*pi*ERB; % 带宽
T = 1/fs;
t = (0:(2*T):(1024*T))'; % 时间向量,每个滤波器的长度为1024个点
G = zeros(length(t), n);
for i = 1:n
tmp = (1i*2*pi*f(i)).^2;
tmp = tmp + (2*pi*B(i)*1i*2*pi*f(i));
tmp = tmp + (2*pi*B(i))^2;
tmp = sqrt(tmp);
tmp = tmp.^(t/T);
tmp = tmp.*exp(-2*pi*B(i)*t);
G(:, i) = tmp;
end
```
使用示例:
```matlab
fs = 16000;
n = 32;
lowFreq = 100;
highFreq = 8000;
G = gammatoneFilterBank(fs, n, lowFreq, highFreq);
% 检查每个滤波器的频率响应
freq = linspace(0, fs/2, 1024);
for i = 1:n
subplot(4, 8, i);
H = fft(G(:, i), 1024);
plot(freq, abs(H));
xlim([lowFreq highFreq]);
end
```
这段代码会生成一个包含32个Gammatone滤波器的滤波器组,并绘制每个滤波器的频率响应。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)