Mercurial > hg > map
comparison testPrograms/oldTestPrograms/MAPtwoToneDemo1D.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 MAPtwoToneDemo | |
2 % Not for distribution but code worth keeping | |
3 % Demonstration of two-tone suppression in the AN using a | |
4 % single channel | |
5 % | |
6 | |
7 dbstop if error | |
8 % create access to all MAP 1_8 facilities | |
9 % addpath ('..\modules', '..\utilities', '..\parameterStore', '..\wavFileStore' , '..\testPrograms') | |
10 addpath (['..' filesep 'modules'], ['..' filesep 'utilities'], ['..' filesep 'parameterStore'], ['..' filesep 'wavFileStore'] , ['..' filesep 'testPrograms']) | |
11 | |
12 moduleSequence= 1:7; % up to the AN | |
13 figure(3), clf | |
14 primaryToneFrequency=2000; | |
15 suppressorFrequency=primaryToneFrequency*1.5; | |
16 | |
17 primaryDB=30; | |
18 suppressors=20:10:80; | |
19 frameCount=0; | |
20 for suppressorDB=suppressors | |
21 frameCount=frameCount+1; | |
22 lowestBF=1000; highestBF= 5000; numChannels=30; | |
23 BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels)); | |
24 BFlist=2000; | |
25 duration=.020; % seconds | |
26 sampleRate= 40000; % Hz (higher sample rate needed for BF>8000 Hz) | |
27 dt=1/sampleRate; % seconds | |
28 | |
29 % for conditionNo=1:3 % probe alone/ suppressor alone/ combined | |
30 for conditionNo=1:3 % probe alone/ suppressor alone/ combined | |
31 switch conditionNo | |
32 case 1 | |
33 primaryLevelDB=primaryDB; | |
34 suppressorLevelDB= -100; | |
35 plotGuide.subPlotNo= 1; % initialize subplot count | |
36 figureTitle=['probe alone: ' num2str(primaryToneFrequency) ' Hz; ' num2str(primaryLevelDB) ' dB SPL']; | |
37 | |
38 case 2 | |
39 primaryLevelDB=-100; | |
40 suppressorLevelDB=suppressorDB; | |
41 plotGuide.subPlotNo= 2; % initialize subplot count | |
42 figureTitle=['suppressor alone: ' num2str(suppressorFrequency) ' Hz; ' num2str(suppressorLevelDB) ' dB SPL']; | |
43 case 3 | |
44 primaryLevelDB=primaryDB; | |
45 suppressorLevelDB=suppressorDB; | |
46 plotGuide.subPlotNo= 3; % initialize subplot count | |
47 figureTitle=['probe + suppressor']; | |
48 end | |
49 | |
50 % primary BF tone | |
51 time1=dt: dt: duration; | |
52 amp=10^(primaryLevelDB/20)*28e-6; | |
53 inputSignal=amp*sin(2*pi*primaryToneFrequency*time1); | |
54 rampDuration=.005; rampTime=dt:dt:rampDuration; | |
55 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ones(1,length(time1)-length(rampTime))]; | |
56 inputSignal=inputSignal.*ramp; | |
57 inputSignal=inputSignal.*fliplr(ramp); | |
58 | |
59 % suppressor | |
60 tone2Duration=duration/2; % s | |
61 time2= dt: dt: tone2Duration; | |
62 % B: tone on | |
63 amp=10^(suppressorLevelDB/20)*28e-6; | |
64 inputSignal2=amp*sin(2*pi*suppressorFrequency*time2); | |
65 rampDuration=.005; rampTime=dt:dt:rampDuration; | |
66 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ones(1,length(time2)-length(rampTime))]; | |
67 inputSignal2=inputSignal2.*ramp; | |
68 % A: initial silence (delay to suppressor) | |
69 silence=zeros(1,length(time2)); | |
70 inputSignal2=[silence inputSignal2]; | |
71 | |
72 % add tone and suppressor components | |
73 inputSignal=inputSignal+inputSignal2; | |
74 | |
75 % specify model parameters | |
76 method=MAPparamsDEMO(BFlist, sampleRate); | |
77 % parameter change (must be global to take effect) | |
78 global AN_IHCsynapseParams | |
79 AN_IHCsynapseParams.mode= 'probability'; | |
80 % method.useEfferent=0; | |
81 | |
82 method.plotGraphs= 1; % please plot | |
83 | |
84 figure(4), subplot(3,1,conditionNo) | |
85 plot(time1, inputSignal, 'k')% ************* | |
86 | |
87 [ANresponse, method, A]=MAPsequenceSeg(inputSignal, method, moduleSequence); | |
88 response{conditionNo}=ANresponse; | |
89 % F(frameCount) = getframe(gcf); | |
90 end | |
91 | |
92 % peakResponse=max(max([response{1} response{2} response{3}])); | |
93 % figure(3), subplot(4,1,1) | |
94 % mesh((response{1}), [0 peakResponse]) | |
95 % title(['primary: ' num2str(primaryDB) ' dB SPL']) | |
96 % zlim([0 5000]), view([-28 36]) | |
97 % | |
98 % figure(3), subplot(4,1,2) | |
99 % mesh((response{2}), [0 peakResponse]) | |
100 % title(['suppressor: ' num2str(suppressorDB) ' dB SPL']) | |
101 % zlim([0 5000]), view([-28 36]) | |
102 % | |
103 % figure(3), subplot(4,1,3) | |
104 % mesh((response{3}), [0 peakResponse]) | |
105 % title([' primary + suppressor ']) | |
106 % zlim([0 5000]), view([-28 36]) | |
107 % | |
108 % figure(3), subplot(4,1,4) | |
109 % sum= response{3}-response{1}-response{2}; | |
110 % mesh(sum) | |
111 % zlim([-2000 2000]) | |
112 % title(' difference matrix (combined - primary - suppressor)') | |
113 % view([-28 20]) | |
114 % disp( [num2str([ suppressorDB primaryDB max(max(sum))])] ) | |
115 % | |
116 % colormap(jet) | |
117 pause(1) | |
118 end | |
119 | |
120 figure(4) | |
121 xlabel('time (s)') | |
122 figure(3) | |
123 xlabel('time (s)') | |
124 | |
125 % figure(99), movie(F, 1, 1) | |
126 % UTIL_showAllMAPStructures |