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