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