Mercurial > hg > map
view userProgramsRM/test_MAP1_14RAM.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 source
function test_DRNL_Ruggero97 % test_DRNL_Ruggero97 attempts to match Ruggero's (1992 and 1997) % iso-intensity data by fiddling with the parameters % # BF is the BF of the filter to be assessed BF=9000; % # test frequencies. check that BF is one of them % copy Ruggero's test tones as fara as possible numFs=6; lowestF=4000; highestF= 11030; toneFrequencyList=round(logspace(log10(lowestF), log10(highestF), numFs)); % # parameter file name. this is the base set of parameters MAPparamsName='Normal'; % # probability representation (not directly relevant here as only % the DRNL output is used AN_spikesOrProbability='probability'; % # tone characteristics sampleRate= 100000; duration=0.0200; % Ruggero uses 5, 10, 25 ms tones rampDuration=0.0015; % raised cosine ramp (seconds) beginSilence=0.050; endSilence=0.020; % # levels levels=[3 10:10:80]; %% # change model parameters % Parameter changes can be used to change one or more model parameters % *after* the MAPparams file has been read paramChanges={}; % switch off all efferent effects and then play with DRNL params paramChanges={... 'DRNLParams.rateToAttenuationFactorProb = 0.00; ',... 'OMEParams.rateToAttenuationFactorProb=0.0;', ... 'DRNLParams.ctBMdB = -20;'... 'DRNLParams.g=1000;'... 'DRNLParams.linCFs=7000;'... 'DRNLParams.linBWs=3500;'... }; % delare 'showMap' options to control graphical output % (not needed but might be useful % showMapOptions.printModelParameters=0; % prints all parameters % showMapOptions.showModelOutput=1; % plot of all stages % showMapOptions.printFiringRates=0; % prints stage activity levels % showMapOptions.showACF=0; % shows SACF (probability only) % showMapOptions.showEfferent=0; % tracks of AR and MOC % showMapOptions.surfProbability=0; % 2D plot of HSR response % showMapOptions.surfSpikes=0; % 2D plot of spikes histogram % showMapOptions.ICrates=0; % IC rates by CNtauGk % showMapOptions.fileName=[]; % run the program global dt DRNLoutput DRNLParams TMoutput dbstop if error restorePath=path; addpath (['..' filesep 'MAP'], ['..' filesep 'wavFileStore'], ... ['..' filesep 'utilities']) figure(2), clf,figure(3), clf,figure(4), clf, peakOutputDisp=zeros(length(levels),length(toneFrequencyList)); peakStapesDisp=zeros(length(levels),length(toneFrequencyList)); %% now vary level and frequency while measuring the response levelNo=0; for leveldBSPL=levels levelNo=levelNo+1; disp(['level: ' num2str(leveldBSPL)]) freqNo=0; for toneFrequency=toneFrequencyList freqNo=freqNo+1; %% Generate stimuli dt=1/sampleRate; time=dt: dt: duration; inputSignal=sum(sin(2*pi*toneFrequency'*time), 1); amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak) inputSignal=amp*inputSignal; % apply ramps if rampDuration>0.5*duration, rampDuration=duration/2; end rampTime=dt:dt:rampDuration; ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ... ones(1,length(time)-length(rampTime))]; inputSignal=inputSignal.*ramp; ramp=fliplr(ramp); inputSignal=inputSignal.*ramp; % add silence intialSilence= zeros(1,round(beginSilence/dt)); finalSilence= zeros(1,round(endSilence/dt)); inputSignal= [intialSilence inputSignal finalSilence]; %% run the model MAP1_14(inputSignal, sampleRate, BF, ... MAPparamsName, AN_spikesOrProbability, paramChanges); peakOutputDisp(levelNo,freqNo)=max(DRNLoutput); peakStapesDisp(levelNo,freqNo)=max(TMoutput); % the model run is complete. Now display the results if debugging % UTIL_showMAP(showMapOptions, paramChanges) end % probe frequencies % monitor progress figure(2), loglog(toneFrequencyList, peakOutputDisp), hold on xlabel('frequency') ylabel('peak DRNL displacement (m)') title ('DRNL uncorrected displacement') end % levels figure(2),legend(num2str(toneFrequencyList'),'location','northwest') % convert from model BM displacement to Ruggero's velocity DRNLvelocity= peakOutputDisp ... .*repmat(2*pi*toneFrequencyList,length(levels),1); % convert from model stapes displacement to Ruggero's velocity stapesVelocity= peakStapesDisp ... .*repmat(2*pi*toneFrequencyList,length(levels),1); % velocity gain is increased velocity attributable to the DRNL DRNLvelocityGain = DRNLvelocity./stapesVelocity; DRNLvelocityGain_dB= 20*log10(DRNLvelocityGain ); % iso-intensity equates all functions at the same outpu for the lowest % velocity tested isoIntensityDRNLvel_dB= DRNLvelocityGain_dB- ... repmat(DRNLvelocityGain_dB(:,1),1,length(toneFrequencyList)); % displays % iso-velocity function (nrmalised by stapes velocity) figure(3), clf, semilogx(toneFrequencyList, isoIntensityDRNLvel_dB) ylim([-10 60]) xlim([2000 20000]) xlabel('frequency') ylabel('peak DRNL velocity gain (dB)') title(['CF= ' num2str(BF) ' Hz']) legend(num2str(levels'),'location','northwest') % velocity I/O function figure(4), clf, semilogy(levels, (DRNLvelocity*1e6)'), hold on ylim([1e0 1e4]) xlim([0 100]) xlabel('level') ylabel(' velocity (microm/ s)') title(['CF= ' num2str(BF) ' Hz']) legend(num2str(toneFrequencyList'),'location','northwest') % command window reports disp(''), disp('***') disp(AN_spikesOrProbability) % DRNL parameter set UTIL_showStructureSummary(DRNLParams, 'DRNLParams', 10) % stimulus characteristics disp(['CF=' num2str(BF)]) disp(['tone Duration=' num2str(rampDuration)]) disp(['ramp Duration=' num2str(duration)]) % particular parameter changes used on this run for i=1:length(paramChanges) disp(paramChanges{i}) end % if required dump one or more matrices in tab spaced format % (suitable for pasting directly into EXCEL. % UTIL_printTabTable([toneFrequencyList' peakOutputDisp']) % leave the path as you found it path(restorePath)