rmeddis@0: function testOME rmeddis@0: rmeddis@0: global experiment rmeddis@0: savePath=path; rmeddis@0: addpath (['..' filesep 'utilities'],['..' filesep 'MAP']) rmeddis@0: rmeddis@0: sampleRate=50000; rmeddis@0: rmeddis@0: dt=1/sampleRate; rmeddis@0: leveldBSPL=80; % dB SPL as used by Huber (may trigger AR) rmeddis@0: amp=10^(leveldBSPL/20)*28e-6; rmeddis@0: duration=.05; rmeddis@0: time=dt: dt: duration; rmeddis@0: rmeddis@0: %% Comparison data (human) rmeddis@0: % These data are taken directly from Huber 2001 (Fig. 4) rmeddis@0: HuberFrequencies=[600 800 1000 2000 3000 4000 6000 8000]; rmeddis@0: HuberDisplacementAt80dBSPL=[1.5E-9 1.5E-09 1.5E-09 1.0E-09 7.0E-10 ... rmeddis@0: 3.0E-10 2.0E-10 1.0E-10]; % m; rmeddis@0: % HuberVelocityAt80dBSPL= 2*pi*HuberFrequencies.*HuberDisplacementAt80dBSPL; rmeddis@0: rmeddis@0: figure(2), clf, subplot(2,1,1) rmeddis@0: set(2,'position',[5 349 268 327]) rmeddis@0: semilogx(HuberFrequencies, 20*log10(HuberDisplacementAt80dBSPL/1e-10),... rmeddis@0: 'ko', 'MarkerFaceColor','k', 'Marker','o', 'markerSize',6) rmeddis@0: % Generate test stimulus ................................................................. rmeddis@0: rmeddis@0: %% independent test using discrete frequencies rmeddis@0: peakResponses=[]; rmeddis@0: peakTMpressure=[]; rmeddis@0: frequencies=[200 400 HuberFrequencies 10000]; rmeddis@0: for toneFrequency=frequencies rmeddis@0: inputSignal=amp*sin(2*pi*toneFrequency*time); rmeddis@0: rmeddis@0: MAPparamsName=experiment.name; rmeddis@0: showPlotsAndDetails=0; rmeddis@0: AN_spikesOrProbability='probability'; rmeddis@0: % switch off AR & MOC (Huber's patients were deaf) rmeddis@0: paramChanges{1}='OMEParams.rateToAttenuationFactorProb=0;'; rmeddis@0: paramChanges{2}='DRNLParams.rateToAttenuationFactorProb = 0;'; rmeddis@0: rmeddis@0: global OMEoutput OMEextEarPressure TMoutput ARAttenuation rmeddis@0: % BF is irrelevant rmeddis@0: MAP1_14(inputSignal, sampleRate, -1, ... rmeddis@0: MAPparamsName, AN_spikesOrProbability, paramChanges); rmeddis@0: rmeddis@0: peakDisplacement=max(OMEoutput(floor(end/2):end)); rmeddis@0: peakResponses=[peakResponses peakDisplacement]; rmeddis@0: rmeddis@0: peakTMpressure=[peakTMpressure max(OMEextEarPressure)]; rmeddis@0: disp([' greatest AR attenuation: ' num2str(min(ARAttenuation))]) rmeddis@0: end rmeddis@0: rmeddis@0: %% Report rmeddis@0: disp('frequency displacement(m)') rmeddis@0: % disp(num2str([frequencies' peakResponses'])) rmeddis@0: fprintf('%6.0f \t%10.3e\n',[frequencies' peakResponses']') rmeddis@0: rmeddis@0: % stapes peak displacement rmeddis@0: figure(2), subplot(2,1,1), hold on rmeddis@0: semilogx(frequencies, 20*log10(peakResponses/1e-10), 'r', 'linewidth',4) rmeddis@0: % ylim([1e-11 1e-8]) rmeddis@0: xlim([100 10000]), ylim([0 30]) rmeddis@0: grid on rmeddis@0: title(['stapes at ' num2str(leveldBSPL) ' (NB deaf)']) rmeddis@0: ylabel('disp: dB re 1e-10m') rmeddis@0: xlabel('stimulus frequency (Hz)') rmeddis@0: legend({'Huber et al','model'},'location','southWest') rmeddis@0: set(gcf,'name','OME') rmeddis@0: rmeddis@0: % external ear resonance rmeddis@0: figure(2), subplot(2,1,2),hold off rmeddis@0: semilogx(frequencies, 20*log10(peakTMpressure/28e-6)-leveldBSPL,... rmeddis@0: 'k', 'linewidth',2) rmeddis@0: xlim([100 10000]) %, ylim([-10 30]) rmeddis@0: grid on rmeddis@0: title(['External ear resonances' ]) rmeddis@0: ylabel('dB') rmeddis@0: xlabel('frequency') rmeddis@0: set(gcf,'name','OME: external resonances') rmeddis@0: % ---------------------------------------------------------- display parameters rmeddis@0: disp(['parameter file was: ' experiment.name]) rmeddis@0: fprintf('\n') rmeddis@0: rmeddis@0: path(savePath);