comparison utilities/UTIL_CAPgenerator.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents
children
comparison
equal deleted inserted replaced
37:771a643d5c29 38:c2204b18f4a2
1 function wholeNerveCAP = UTIL_CAPgenerator...
2 (ANresponse, dt, BFlist, numANfibers, plotCAP)
3 %
4 % Generates a compound action potential by convolving an impulse repsonse,
5 % as defined by Mark Chertoff (2004, JASA), with the response of the
6 % auditory nerve.
7 %
8 %
9 % -e(-k*time)*SIN(2*PI()*f*time)
10 %
11 % mu(t) = e^-kt * sin(omega*t)
12 % omega = 2 * pi * f
13 %
14 %
15 % Robert T. Ferry
16 % 01st May 2008
17 %
18 %
19
20 nChannels=length(BFlist);
21 [r nSpikeEpochs]=size(ANresponse);
22
23 wholeNerveCAP = [];
24 channelCAP = [];
25 e = exp(1);
26 k = 1000;
27 impulseDuration = 0.01;
28 impulseFrequency = 750;
29 impulseTime = dt:dt:impulseDuration;
30 impulseResponse = -e.^(-k*impulseTime).*sin(2*pi*impulseFrequency*impulseTime);
31 impulseResponse=impulseResponse-mean(impulseResponse);
32
33 % WholeNerveCAP
34 ANoutput = sum(ANresponse, 1);
35 convolvedWholeNerveCAP = conv(ANoutput, impulseResponse(1,:));
36 % truncate
37 convolvedWholeNerveCAP=convolvedWholeNerveCAP(1:nSpikeEpochs);
38
39 % apply measurement time constant
40 sampleRate=1/dt;
41 upperFreq=sampleRate/4;
42 lowPassCutOff=40;
43 wholeNerveCAP = UTIL_Butterworth(convolvedWholeNerveCAP, dt, lowPassCutOff, upperFreq, 1);
44 % or do not do this
45 % wholeNerveCAP = convolvedWholeNerveCAP;
46
47 % Plot output?
48
49 CAPtime = dt:dt:dt*length(wholeNerveCAP);
50
51 if (plotCAP == 1)
52 figure(9)
53
54 subplot(3,1,1), plot(impulseTime, impulseResponse)
55 title('Impulse response')
56 xlabel('Time (s)'), ylabel('Amplitude (Pa)')
57 xlim([0 max(impulseTime)]), ylim([-inf inf])
58
59 subplot(3,1,2), plot(CAPtime, wholeNerveCAP)
60 title(['AN CAP (whole-nerve) ' num2str(length(BFlist)) ' channels' num2str(numANfibers) ' fibers/ch'])
61 xlabel('Time (s)'), ylabel('Amplitude (Pa)')
62 xlim([0 max(CAPtime)]), ylim([-inf inf])
63
64 end