magnetra
Full Member level 5
- Joined
- Apr 21, 2005
- Messages
- 263
- Helped
- 10
- Reputation
- 20
- Reaction score
- 7
- Trophy points
- 1,298
- Location
- 27.45N, 85.20E KTM, NP
- Activity points
- 3,375
chirp signal
I am trying to emulate the output from a Gammatone filter for a hyperbolic chirp as input. The matlab script is shown below.
I have generated a hyperbolic chirp with frequency sweeping from 100kHz to 20kHz in 1ms. And the Gamma tone filter has center frequency of 50kHz and bandwidth of 20kHz. This means, theoretically the filter output should peak when the input chirp frequency hits 50kHz and this happens @ time t=250us.
However, the convoluted result ( output from GTF) seems to peak much earlier than 250us which is quite unexpected.
Please help me resolve this issue.
[/code]
I am trying to emulate the output from a Gammatone filter for a hyperbolic chirp as input. The matlab script is shown below.
I have generated a hyperbolic chirp with frequency sweeping from 100kHz to 20kHz in 1ms. And the Gamma tone filter has center frequency of 50kHz and bandwidth of 20kHz. This means, theoretically the filter output should peak when the input chirp frequency hits 50kHz and this happens @ time t=250us.
However, the convoluted result ( output from GTF) seems to peak much earlier than 250us which is quite unexpected.
Please help me resolve this issue.
Code:
Fs = 500e3; % Sampling freq
T = 1e-3; % 1ms sweep time
t = 0:1/Fs:T;
% Input Hyperbolic chirp generation
% The chirp frequency sweeps from f1 to f2
% The beginning and end of the chirp amplitude is shaped with Hanning window
f1 = 100e3;
f2 = 20e3;
b = f2*T/(f1-f2);
a = b*f1;
freq = a./(t + b);
wHann = hann(101)';
wAmp = [wHann(1:51) ones(1,length(t)-101) wHann(52:101)];
x = cos(2*pi*freq.*t).*wAmp; % Hyperbolic chirp with AM by Hanning window
% GTF impuse response
% Gammatone filter with bandwidth B and center freq fc
k = 1; % Gain
n = 4; % Choosen appropriately for human auditory model (Patterson 90)
B = 20e3; % Bandwidth in Hz
fc = 50e3; % Center frequency
% impuse response
h = k*t.^(n-1).*exp(-2*pi*B*t).*cos(2*pi*fc*t);
% Output from GTF
yG = conv(h,x)/Fs;
tg = (0:length(yG)-1)/Fs;
figure;
plot(tg,yG);
title('GTF output');