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);
|