annotate userProgramsRM/test_MAP1_14RAMworks.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
rev   line source
rmeddis@38 1 function test_MAP1_14RAM
rmeddis@38 2
rmeddis@38 3 global dt DRNLoutput
rmeddis@38 4 global DRNLParams TMoutput
rmeddis@38 5 global peakOutputDisp alignedOutput toneFrequencyList levels leveldBSPL logOutput
rmeddis@38 6
rmeddis@38 7
rmeddis@38 8 dbstop if error
rmeddis@38 9 restorePath=path;
rmeddis@38 10 addpath (['..' filesep 'MAP'], ['..' filesep 'wavFileStore'], ...
rmeddis@38 11 ['..' filesep 'utilities'])
rmeddis@38 12 figure(2), clf
rmeddis@38 13
rmeddis@38 14 %% # BFlist is the BF of the filter to be assessed
rmeddis@38 15 BFlist=8000;
rmeddis@38 16 numChannels=1;
rmeddis@38 17
rmeddis@38 18 % define probe frequencies
rmeddis@38 19 numFs=6;
rmeddis@38 20 lowestF=BFlist/5; highestF= BFlist*1.4;
rmeddis@38 21 lowestF=4000; highestF= 12600;
rmeddis@38 22 toneFrequencyList=round(logspace(log10(lowestF), log10(highestF), numFs));
rmeddis@38 23
rmeddis@38 24 %% # parameter file name
rmeddis@38 25 MAPparamsName='Normal';
rmeddis@38 26
rmeddis@38 27 %% # probability representation
rmeddis@38 28 AN_spikesOrProbability='probability';
rmeddis@38 29
rmeddis@38 30 %% # tone duration
rmeddis@38 31 sampleRate= 100000;
rmeddis@38 32 duration=0.0200; % seconds
rmeddis@38 33 rampDuration=.005; % raised cosine ramp (seconds)
rmeddis@38 34 beginSilence=0.050;
rmeddis@38 35 endSilence=0.050;
rmeddis@38 36
rmeddis@38 37 %% # levels
rmeddis@38 38 % probe details
rmeddis@38 39 levels=0:10:80;
rmeddis@38 40 % levels=80;
rmeddis@38 41
rmeddis@38 42 %% # change model parameters
rmeddis@38 43 % Parameter changes can be used to change one or more model parameters
rmeddis@38 44 % *after* the MAPparams file has been read
rmeddis@38 45
rmeddis@38 46 % adjust linear path gain (previously g=100)
rmeddis@38 47 % switch off all efferent effects
rmeddis@38 48 paramChanges={...
rmeddis@38 49 'DRNLParams.rateToAttenuationFactorProb = 0.00; ',...
rmeddis@38 50 'OMEParams.rateToAttenuationFactorProb=0.0;', ...
rmeddis@38 51 'DRNLParams.ctBMdB = -10;'...
rmeddis@38 52 'DRNLParams.g=200;'...
rmeddis@38 53 'DRNLParams.linCFs=6500;'...
rmeddis@38 54 'DRNLParams.linBWs=2000;'...
rmeddis@38 55 };
rmeddis@38 56 % 'DRNLParams.a=0;'...
rmeddis@38 57
rmeddis@38 58
rmeddis@38 59 %% delare 'showMap' options to control graphical output
rmeddis@38 60 showMapOptions.printModelParameters=0; % prints all parameters
rmeddis@38 61 showMapOptions.showModelOutput=1; % plot of all stages
rmeddis@38 62 showMapOptions.printFiringRates=0; % prints stage activity levels
rmeddis@38 63 showMapOptions.showACF=0; % shows SACF (probability only)
rmeddis@38 64 showMapOptions.showEfferent=0; % tracks of AR and MOC
rmeddis@38 65 showMapOptions.surfProbability=0; % 2D plot of HSR response
rmeddis@38 66 showMapOptions.surfSpikes=0; % 2D plot of spikes histogram
rmeddis@38 67 showMapOptions.ICrates=0; % IC rates by CNtauGk
rmeddis@38 68 showMapOptions.fileName=[];
rmeddis@38 69
rmeddis@38 70
rmeddis@38 71 %% now vary level and frequency
rmeddis@38 72 peakOutputDisp=zeros(length(levels),length(toneFrequencyList));
rmeddis@38 73 peakStapesDisp=zeros(length(levels),length(toneFrequencyList));
rmeddis@38 74 levelNo=0;
rmeddis@38 75 for leveldBSPL=levels
rmeddis@38 76 levelNo=levelNo+1;
rmeddis@38 77 disp(['level: ' num2str(leveldBSPL)])
rmeddis@38 78 freqNo=0;
rmeddis@38 79 for toneFrequency=toneFrequencyList
rmeddis@38 80 freqNo=freqNo+1;
rmeddis@38 81
rmeddis@38 82 %% Generate stimuli
rmeddis@38 83 dt=1/sampleRate;
rmeddis@38 84 time=dt: dt: duration;
rmeddis@38 85 inputSignal=sum(sin(2*pi*toneFrequency'*time), 1);
rmeddis@38 86 amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak)
rmeddis@38 87 inputSignal=amp*inputSignal;
rmeddis@38 88 % apply ramps
rmeddis@38 89 if rampDuration>0.5*duration, rampDuration=duration/2; end
rmeddis@38 90 rampTime=dt:dt:rampDuration;
rmeddis@38 91 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
rmeddis@38 92 ones(1,length(time)-length(rampTime))];
rmeddis@38 93 inputSignal=inputSignal.*ramp;
rmeddis@38 94 ramp=fliplr(ramp);
rmeddis@38 95 inputSignal=inputSignal.*ramp;
rmeddis@38 96 % add silence
rmeddis@38 97 intialSilence= zeros(1,round(beginSilence/dt));
rmeddis@38 98 finalSilence= zeros(1,round(endSilence/dt));
rmeddis@38 99 inputSignal= [intialSilence inputSignal finalSilence];
rmeddis@38 100
rmeddis@38 101 %% run the model
rmeddis@38 102 % fprintf('\n')
rmeddis@38 103 % disp([num2str(numChannels) ' channel model: ' AN_spikesOrProbability])
rmeddis@38 104 % disp('Computing ...')
rmeddis@38 105
rmeddis@38 106 MAP1_14(inputSignal, sampleRate, BFlist, ...
rmeddis@38 107 MAPparamsName, AN_spikesOrProbability, paramChanges);
rmeddis@38 108
rmeddis@38 109 peakOutputDisp(levelNo,freqNo)=max(DRNLoutput);
rmeddis@38 110 peakStapesDisp(levelNo,freqNo)=max(TMoutput);
rmeddis@38 111
rmeddis@38 112 %% the model run is complete. Now display the results
rmeddis@38 113 % UTIL_showMAP(showMapOptions, paramChanges)
rmeddis@38 114 end % probe frequencies
rmeddis@38 115 figure(2), loglog(toneFrequencyList, peakOutputDisp), hold on
rmeddis@38 116 xlabel('frequency')
rmeddis@38 117 ylabel('peak DRNL displacement (m)')
rmeddis@38 118
rmeddis@38 119 end % levels
rmeddis@38 120 %% alignmed plot
rmeddis@38 121
rmeddis@38 122
rmeddis@38 123 x=peakOutputDisp./peakStapesDisp;
rmeddis@38 124 logOutput=20*log10(x.*repmat((2*pi*toneFrequencyList),length(levels),1));
rmeddis@38 125 alignedOutput=logOutput-repmat(logOutput(:,1), 1, length(toneFrequencyList));
rmeddis@38 126 figure(3), clf, semilogx(toneFrequencyList, alignedOutput), hold on
rmeddis@38 127 ylim([-20 80])
rmeddis@38 128 xlim([2000 20000])
rmeddis@38 129 % legend(num2str(levels'))
rmeddis@38 130 xlabel('frequency')
rmeddis@38 131 ylabel('peak DRNL velocity (dB)')
rmeddis@38 132 title(['level ' num2str(leveldBSPL) ' dB SPL'])
rmeddis@38 133
rmeddis@38 134 disp(['level=' num2str(leveldBSPL)])
rmeddis@38 135 disp(['toneFrequency=' num2str(toneFrequency)])
rmeddis@38 136
rmeddis@38 137 disp(['attenuation factor =' ...
rmeddis@38 138 num2str(DRNLParams.rateToAttenuationFactor, '%5.3f') ])
rmeddis@38 139 disp(['attenuation factor (probability)=' ...
rmeddis@38 140 num2str(DRNLParams.rateToAttenuationFactorProb, '%5.3f') ])
rmeddis@38 141 disp(AN_spikesOrProbability)
rmeddis@38 142 disp(paramChanges)
rmeddis@38 143
rmeddis@38 144 % UTIL_printTabTable([toneFrequencyList' peakOutputDisp'])
rmeddis@38 145
rmeddis@38 146 path(restorePath)
rmeddis@38 147