annotate testPrograms/testOME.m @ 30:1a502830d462

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