diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testPrograms/oldTestPrograms/MAPtwoToneDemo1D.m	Mon Nov 28 13:34:28 2011 +0000
@@ -0,0 +1,126 @@
+% function MAPtwoToneDemo
+% Not for distribution but code worth keeping
+% Demonstration of two-tone suppression in the AN using a
+%   single channel
+%
+
+dbstop if error
+% create access to all MAP 1_8 facilities
+% addpath ('..\modules', '..\utilities',  '..\parameterStore',  '..\wavFileStore' , '..\testPrograms')
+addpath (['..' filesep 'modules'], ['..' filesep 'utilities'],  ['..' filesep 'parameterStore'],  ['..' filesep 'wavFileStore'] , ['..' filesep 'testPrograms'])
+
+moduleSequence= 1:7;  	% up to the AN
+figure(3), clf
+primaryToneFrequency=2000;
+suppressorFrequency=primaryToneFrequency*1.5;
+
+primaryDB=30;
+suppressors=20:10:80;
+frameCount=0;
+for suppressorDB=suppressors
+    frameCount=frameCount+1;
+    lowestBF=1000; 	highestBF= 5000; 	numChannels=30;
+    BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels));
+    BFlist=2000;
+    duration=.020;		      % seconds
+    sampleRate= 40000; % Hz (higher sample rate needed for BF>8000 Hz)
+    dt=1/sampleRate; % seconds
+    
+    % for conditionNo=1:3  % probe alone/ suppressor alone/ combined
+    for conditionNo=1:3  % probe alone/ suppressor alone/ combined
+        switch conditionNo
+            case 1
+                primaryLevelDB=primaryDB;
+                suppressorLevelDB= -100;
+                plotGuide.subPlotNo=	1;     % initialize subplot count
+                figureTitle=['probe alone:  ' num2str(primaryToneFrequency) ' Hz;   ' num2str(primaryLevelDB) ' dB SPL'];
+                
+            case 2
+                primaryLevelDB=-100;
+                suppressorLevelDB=suppressorDB;
+                plotGuide.subPlotNo=	2;     % initialize subplot count
+                figureTitle=['suppressor alone:  ' num2str(suppressorFrequency) ' Hz;   ' num2str(suppressorLevelDB) ' dB SPL'];
+            case 3
+                primaryLevelDB=primaryDB;
+                suppressorLevelDB=suppressorDB;
+                plotGuide.subPlotNo=	3;     % initialize subplot count
+                figureTitle=['probe + suppressor'];
+        end
+        
+        % primary BF tone
+        time1=dt: dt: duration;
+        amp=10^(primaryLevelDB/20)*28e-6;
+        inputSignal=amp*sin(2*pi*primaryToneFrequency*time1);
+        rampDuration=.005; rampTime=dt:dt:rampDuration;
+        ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ones(1,length(time1)-length(rampTime))];
+        inputSignal=inputSignal.*ramp;
+        inputSignal=inputSignal.*fliplr(ramp);
+        
+        % suppressor
+        tone2Duration=duration/2; % s
+        time2= dt: dt: tone2Duration;
+        % B: tone on
+        amp=10^(suppressorLevelDB/20)*28e-6;
+        inputSignal2=amp*sin(2*pi*suppressorFrequency*time2);
+        rampDuration=.005; rampTime=dt:dt:rampDuration;
+        ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ones(1,length(time2)-length(rampTime))];
+        inputSignal2=inputSignal2.*ramp;
+        % A: initial silence (delay to suppressor)
+        silence=zeros(1,length(time2));
+        inputSignal2=[silence inputSignal2];
+        
+        % add tone and suppressor components
+        inputSignal=inputSignal+inputSignal2;
+        
+        % specify model parameters
+        method=MAPparamsDEMO(BFlist, sampleRate);
+        % parameter change (must be global to take effect)
+        global   AN_IHCsynapseParams
+        AN_IHCsynapseParams.mode=	'probability';
+%         method.useEfferent=0;
+        
+        method.plotGraphs=	1;	   % please plot
+        
+        figure(4), subplot(3,1,conditionNo)
+        plot(time1, inputSignal, 'k')% *************
+        
+        [ANresponse, method, A]=MAPsequenceSeg(inputSignal, method, moduleSequence);
+        response{conditionNo}=ANresponse;
+% 	F(frameCount) = getframe(gcf);
+    end
+    
+%     peakResponse=max(max([response{1} response{2} response{3}]));
+%     figure(3), subplot(4,1,1)
+%     mesh((response{1}), [0 peakResponse])
+%     title(['primary: ' num2str(primaryDB) ' dB SPL'])
+%     zlim([0 5000]), view([-28 36])
+%     
+%     figure(3), subplot(4,1,2)
+%     mesh((response{2}), [0 peakResponse])
+%     title(['suppressor: ' num2str(suppressorDB) ' dB SPL'])
+%     zlim([0 5000]),  view([-28 36])
+%     
+%     figure(3), subplot(4,1,3)
+%     mesh((response{3}), [0 peakResponse])
+%     title([' primary + suppressor '])
+%     zlim([0 5000]), view([-28 36])
+%     
+%     figure(3), subplot(4,1,4)
+%     sum= response{3}-response{1}-response{2};
+%     mesh(sum)
+%     zlim([-2000 2000])
+%     title(' difference matrix (combined - primary - suppressor)')
+%     view([-28 20])
+%     disp( [num2str([ suppressorDB primaryDB max(max(sum))])] )
+%     
+%     colormap(jet)
+    pause(1)
+end
+
+figure(4)
+xlabel('time (s)')
+figure(3)
+xlabel('time (s)')
+
+%  figure(99), movie(F, 1, 1)
+% UTIL_showAllMAPStructures
\ No newline at end of file