annotate testPrograms/testOME.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 25d53244d5c8
children
rev   line source
rmeddis@29 1 function testOME(paramsName, paramChanges)
rmeddis@38 2 % testOME compute the external resonance and
rmeddis@38 3 % stapes response at a number of frequencies
rmeddis@38 4 % It compares the stapes displacement against human in vivo data
rmeddis@35 5 % collected by Huber et al.2001.
rmeddis@38 6 % paramsName: name of file in parameterStore containing model parameters
rmeddis@38 7 % paramchanges: string array of changes to parameters.
rmeddis@38 8 % this can be omitted or {} is acceptable argument
rmeddis@38 9 %
rmeddis@35 10 % testOME('Normal',{})
rmeddis@29 11
rmeddis@29 12 savePath=path;
rmeddis@29 13 addpath (['..' filesep 'utilities'],['..' filesep 'MAP'])
rmeddis@29 14
rmeddis@38 15 % default arguments
rmeddis@29 16 if nargin<2
rmeddis@29 17 paramChanges=[];
rmeddis@29 18 end
rmeddis@38 19 if nargin<1
rmeddis@38 20 paramsName='Normal';
rmeddis@38 21 end
rmeddis@29 22
rmeddis@29 23 sampleRate=50000;
rmeddis@29 24
rmeddis@29 25 dt=1/sampleRate;
rmeddis@29 26 leveldBSPL=80; % dB SPL as used by Huber (may trigger AR)
rmeddis@29 27 amp=10^(leveldBSPL/20)*28e-6;
rmeddis@29 28 duration=.05;
rmeddis@29 29 time=dt: dt: duration;
rmeddis@29 30
rmeddis@29 31 %% Comparison data (human)
rmeddis@29 32 % These data are taken directly from Huber 2001 (Fig. 4)
rmeddis@29 33 HuberFrequencies=[600 800 1000 2000 3000 4000 6000 8000];
rmeddis@29 34 HuberDisplacementAt80dBSPL=[1.5E-9 1.5E-09 1.5E-09 1.0E-09 7.0E-10 ...
rmeddis@29 35 3.0E-10 2.0E-10 1.0E-10]; % m;
rmeddis@29 36 % HuberVelocityAt80dBSPL= 2*pi*HuberFrequencies.*HuberDisplacementAt80dBSPL;
rmeddis@29 37
rmeddis@35 38 figure(2), clf, subplot(2,1,2)
rmeddis@29 39 set(2,'position',[5 349 268 327])
rmeddis@29 40 semilogx(HuberFrequencies, 20*log10(HuberDisplacementAt80dBSPL/1e-10),...
rmeddis@29 41 'ko', 'MarkerFaceColor','k', 'Marker','o', 'markerSize',6)
rmeddis@29 42 hold on
rmeddis@29 43
rmeddis@29 44 %% Generate test stimulus .................................................................
rmeddis@29 45
rmeddis@29 46 % independent test using discrete frequencies
rmeddis@29 47 peakResponses=[];
rmeddis@29 48 peakTMpressure=[];
rmeddis@29 49 frequencies=[200 400 HuberFrequencies 10000];
rmeddis@29 50 for toneFrequency=frequencies
rmeddis@29 51 inputSignal=amp*sin(2*pi*toneFrequency*time);
rmeddis@29 52
rmeddis@29 53 showPlotsAndDetails=0;
rmeddis@29 54 AN_spikesOrProbability='probability';
rmeddis@35 55
rmeddis@29 56 % switch off AR & MOC (Huber's patients were deaf)
rmeddis@35 57 idx=length(paramChanges);
rmeddis@35 58 paramChanges{idx+1}='OMEParams.rateToAttenuationFactorProb=0;';
rmeddis@35 59 paramChanges{idx+2}='DRNLParams.rateToAttenuationFactorProb = 0;';
rmeddis@29 60
rmeddis@29 61 global OMEoutput OMEextEarPressure TMoutput ARattenuation
rmeddis@29 62 % BF is irrelevant
rmeddis@29 63 MAP1_14(inputSignal, sampleRate, -1, ...
rmeddis@29 64 paramsName, AN_spikesOrProbability, paramChanges);
rmeddis@29 65
rmeddis@29 66 peakDisplacement=max(OMEoutput(floor(end/2):end));
rmeddis@29 67 peakResponses=[peakResponses peakDisplacement];
rmeddis@29 68
rmeddis@29 69 peakTMpressure=[peakTMpressure max(OMEextEarPressure)];
rmeddis@29 70 end
rmeddis@29 71
rmeddis@29 72 %% Report
rmeddis@29 73 disp('frequency displacement(m)')
rmeddis@29 74 % disp(num2str([frequencies' peakResponses']))
rmeddis@29 75 fprintf('%6.0f \t%10.3e\n',[frequencies' peakResponses']')
rmeddis@29 76
rmeddis@29 77 % stapes peak displacement
rmeddis@35 78 figure(2), subplot(2,1,2), hold on
rmeddis@29 79 semilogx(frequencies, 20*log10(peakResponses/1e-10), 'r', 'linewidth',4)
rmeddis@29 80 set(gca,'xScale','log')
rmeddis@29 81 % ylim([1e-11 1e-8])
rmeddis@29 82 xlim([100 10000]), ylim([0 30])
rmeddis@29 83 grid on
rmeddis@35 84 title(['stapes at ' num2str(leveldBSPL)])
rmeddis@29 85 ylabel('disp: dB re 1e-10m')
rmeddis@29 86 xlabel('stimulus frequency (Hz)')
rmeddis@29 87 legend({'Huber et al','model'},'location','southWest')
rmeddis@29 88 set(gcf,'name','OME')
rmeddis@29 89
rmeddis@29 90 % external ear resonance
rmeddis@35 91 figure(2), subplot(2,1,1),hold off
rmeddis@29 92 semilogx(frequencies, 20*log10(peakTMpressure/28e-6)-leveldBSPL,...
rmeddis@29 93 'k', 'linewidth',2)
rmeddis@29 94 xlim([100 10000]) %, ylim([-10 30])
rmeddis@29 95 grid on
rmeddis@29 96 title(['External ear resonances' ])
rmeddis@29 97 ylabel('dB')
rmeddis@29 98 xlabel('frequency')
rmeddis@29 99 set(gcf,'name','OME: external resonances')
rmeddis@29 100 % ---------------------------------------------------------- display parameters
rmeddis@29 101 disp(['parameter file was: ' paramsName])
rmeddis@29 102 fprintf('\n')
rmeddis@29 103
rmeddis@29 104 path(savePath);