Applies to version: 1.1.0

View the code

Go to function

GAMMATONE - Gammatone filter coefficients


[b,a] = gammatone(fc,fs,n,betamul);
[b,a] = gammatone(fc,fs,n);
[b,a] = gammatone(fc,fs);

Input parameters

fc center frequency in Hz.
fs sampling rate in Hz.
n filter order.
beta bandwidth of the filter.

Output parameters

b nominator coefficients.
a denominator coefficients.


gammatone(fc,fs,n,betamul) computes the filter coefficients of a digital gammatone filter with center frequency fc, order n, sampling rate fs and bandwith determined by betamul. The bandwidth beta of each filter is determined as betamul times audfiltbw of the center frequency of corresponding filter.

By default, the returned filter coefficients comes from the all-pole approximation described in Lyon (1997). The filters are normalized to have a 0 dB attenuation at the center frequency (another way of stating this is that their impulse responses will have unit area).

gammatone(fc,fs,n) will do the same but choose a filter bandwidth according to Glasberg and Moore (1990).

gammatone(fc,fs) will do as above for a 4th order filter.

If fc is a vector, each entry of fc is considered as one center frequency, and the corresponding coefficients are returned as row vectors in the output.

The inpulse response of the gammatone filter is given by:

\begin{equation*} g(t) = at^{n-1}cos(2\pi\cdot fc\cdot t)e^{-2\pi \beta \cdot t} \end{equation*}

gammatone takes the following flags at the end of the line of input arguments:

'allpole' Compute the all-pole approximation of Gammatone filters by Lyon. This is the default
'classic' Compute the classical mixed pole-zero approximation of gammatone filters.
'complex' Generate filter coefficients corresponding to a complex valued filterbank modulated by exponential functions. This is useful for envelope extration purposes.
'real' Generate real-valued filters.
'casualphase' This makes the phase of each filter start at zero. This is the default.
'peakphase' This makes the phase of each filter be zero when the envelope of the impulse response of the filter peaks.
'exppeakphase' Experimental version of peakphase. In addition to peakphase, the output signal is delayed such that the maxima of the corresponding Gammatone impulse responses are aligned. This option has been created to produce some of the figures from Patterson et al. (1987).
'0dBforall' This scales the amplitude of each filter to have an impulse response of 0dB. This is default.
'6dBperoctave' This scales the amplitude of each filter to have an impulse response of +/-6dB per octave.

To create the filter coefficients of a 1-erb spaced filter bank using gammatone filters use the following construction:

[b,a] = gammatone(erbspacebw(flow,fhigh),fs,'complex');

To apply the (complex valued) filters to an input signal, use filterbankz:

outsig = 2*real(ufilterbankz(b,a,insig));


A. Aertsen and P. Johannesma. Spectro-temporal receptive fields of auditory neurons in the grassfrog. I. Characterization of tonal and natural stimuli. Biol. Cybern, 38:223--234, 1980.

R. Lyon. All pole models of auditory filtering. In E. R. Lewis, G. R. Long, R. F. Lyon, P. M. Narins, C. R. Steele, and E. Hecht-Poinar, editors, Diversity in auditory mechanics, pages 205--211. World Scientific Publishing, Singapore, 1997.

R. Patterson, I. Nimmo-Smith, J. Holdsworth, and P. Rice. An efficient auditory filterbank based on the gammatone function. APU report, 2341, 1987.