To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at git://github.com/rmeddis/MAP.git .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Revision:

root / testPrograms / testOME.m @ 29:b51bf546ca3f

History | View | Annotate | Download (2.83 KB)

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