annotate userProgramsRM/MAPdemoMultiChOAE.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 [frequencies fft_ampdB]= ...
rmeddis@38 2 MAPdemoMultiChOAE (leveldBSPL, toneFrequencies)
rmeddis@38 3 % MAPdemo runs the MATLAB auditory periphery model
rmeddis@38 4 %
rmeddis@38 5 % The OAE is simulated by combining the output from all DRNL channels
rmeddis@38 6 %
rmeddis@38 7 % arguments leveldBSPL and toneFrequencies are optional
rmeddis@38 8 % defaults are 70 and [5000 6000]
rmeddis@38 9 %
rmeddis@38 10 % e.g.
rmeddis@38 11 % MAPdemoMultiChOAE (60, [3000 4000])
rmeddis@38 12
rmeddis@38 13
rmeddis@38 14 global dt DRNLoutput
rmeddis@38 15 dbstop if error
rmeddis@38 16 restorePath=path;
rmeddis@38 17 addpath (['..' filesep 'MAP'], ['..' filesep 'utilities'], ...
rmeddis@38 18 ['..' filesep 'parameterStore'], ['..' filesep 'wavFileStore'],...
rmeddis@38 19 ['..' filesep 'testPrograms'])
rmeddis@38 20
rmeddis@38 21 % set parameter file here
rmeddis@38 22 paramsName='Normal';
rmeddis@38 23 % choose probability because spikes not used to evaluate BM
rmeddis@38 24 AN_spikesOrProbability='probability';
rmeddis@38 25 % add parameter changes here. paramchanges is a cell array of command
rmeddis@38 26 % strings
rmeddis@38 27 paramChanges={};
rmeddis@38 28
rmeddis@38 29 % DRNL channels
rmeddis@38 30 lowestBF=1000; highestBF= 8000; numChannels=41;
rmeddis@38 31 % includes BFs at 250 500 1000 2000 4000 8000 (for 11, 21, 31 BFs)
rmeddis@38 32 % the output from all these filters will be combined to form the OAE
rmeddis@38 33 BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels));
rmeddis@38 34
rmeddis@38 35 if nargin<2
rmeddis@38 36 toneFrequencies= 2000; % single pure tone test
rmeddis@38 37 toneFrequencies=[ 2000 3000]; % F1 F2 for DPOAEs
rmeddis@38 38 toneFrequencies=[ 5000 6000]; % F1 F2
rmeddis@38 39 end
rmeddis@38 40 duration=0.05; % seconds
rmeddis@38 41 duration=0.05; % seconds
rmeddis@38 42 rampDuration=.005;
rmeddis@38 43
rmeddis@38 44 if nargin<1
rmeddis@38 45 leveldBSPL=70; % dB SPL
rmeddis@38 46 end
rmeddis@38 47 amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak level)
rmeddis@38 48
rmeddis@38 49 % Create pure stimulus
rmeddis@38 50 sampleRate= 100000;
rmeddis@38 51 dt=1/sampleRate;
rmeddis@38 52 time=dt: dt: duration;
rmeddis@38 53 inputSignal=sum(sin(2*pi*toneFrequencies'*time), 1);
rmeddis@38 54 inputSignal=amp*inputSignal;
rmeddis@38 55
rmeddis@38 56 % apply ramps
rmeddis@38 57 if rampDuration>0.5*duration, rampDuration=duration/2; end
rmeddis@38 58 rampTime=dt:dt:rampDuration;
rmeddis@38 59 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
rmeddis@38 60 ones(1,length(time)-length(rampTime))];
rmeddis@38 61 inputSignal=inputSignal.*ramp; % at the beginning
rmeddis@38 62 ramp=fliplr(ramp);
rmeddis@38 63 inputSignal=inputSignal.*ramp; % and at the end
rmeddis@38 64
rmeddis@38 65 % add 10 ms silence
rmeddis@38 66 silenceDuration=0.01;
rmeddis@38 67 silence= zeros(1,round(silenceDuration/dt));
rmeddis@38 68 inputSignal= [silence inputSignal silence];
rmeddis@38 69 time=dt: dt: dt*length(inputSignal);
rmeddis@38 70
rmeddis@38 71 %% delare 'showMap' options to control graphical output
rmeddis@38 72 showMapOptions.printModelParameters=0; % prints all parameters
rmeddis@38 73 showMapOptions.showModelOutput=1; % plot of all stages
rmeddis@38 74 showMapOptions.printFiringRates=1; % prints stage activity levels
rmeddis@38 75 showMapOptions.showACF=0; % shows SACF (probability only)
rmeddis@38 76 showMapOptions.showEfferent=0; % tracks of AR and MOC
rmeddis@38 77 showMapOptions.surfProbability=0; % 2D plot of HSR response
rmeddis@38 78 showMapOptions.surfSpikes=0; % 2D plot of spikes histogram
rmeddis@38 79 showMapOptions.ICrates=0; % IC rates by CNtauGk
rmeddis@38 80
rmeddis@38 81
rmeddis@38 82 MAP1_14(inputSignal, 1/dt, BFlist, ...
rmeddis@38 83 paramsName, AN_spikesOrProbability, paramChanges);
rmeddis@38 84
rmeddis@38 85 UTIL_showMAP(showMapOptions, paramChanges)
rmeddis@38 86 pause(0.1)
rmeddis@38 87
rmeddis@38 88 % use this to produce a comnplete record of model parameters
rmeddis@38 89 % UTIL_showAllMAPStructures
rmeddis@38 90
rmeddis@38 91 OAE=sum(DRNLoutput);
rmeddis@38 92 figure(5),subplot(2,1,1)
rmeddis@38 93 plot(time,OAE)
rmeddis@38 94 title(['F=' num2str(toneFrequencies)])
rmeddis@38 95 [fft_powerdB, fft_phase, frequencies, fft_ampdB]= UTIL_FFT(OAE, dt, 1e-15);
rmeddis@38 96 idx=find(frequencies<1e4);
rmeddis@38 97
rmeddis@38 98 figure(5),subplot(2,1,2)
rmeddis@38 99 plot(frequencies(idx),fft_ampdB(idx))
rmeddis@38 100 title ('FFT of OAE')
rmeddis@38 101 ylabel('dB')
rmeddis@38 102 ylim([0 100])
rmeddis@38 103 grid on
rmeddis@38 104
rmeddis@38 105 path(restorePath);