Mercurial > hg > map
comparison testPrograms/testDPOAE.m @ 38:c2204b18f4a2 tip
End nov big change
author | Ray Meddis <rmeddis@essex.ac.uk> |
---|---|
date | Mon, 28 Nov 2011 13:34:28 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
37:771a643d5c29 | 38:c2204b18f4a2 |
---|---|
1 function [frequencies fft_ampdB]= ... | |
2 testDPOAE (leveldBSPL, toneFrequencies) | |
3 % MAPdemo runs the MATLAB auditory periphery model | |
4 % | |
5 % The OAE is simulated by combining the output from all DRNL channels | |
6 % | |
7 % arguments leveldBSPL and toneFrequencies are optional | |
8 % defaults are 70 and [5000 6000] | |
9 % | |
10 % e.g. | |
11 % MAPdemoMultiChOAE (60, [3000 4000]) | |
12 | |
13 | |
14 global dt DRNLoutput | |
15 dbstop if error | |
16 restorePath=path; | |
17 addpath (['..' filesep 'MAP'], ['..' filesep 'utilities'], ... | |
18 ['..' filesep 'parameterStore'], ['..' filesep 'wavFileStore'],... | |
19 ['..' filesep 'testPrograms']) | |
20 | |
21 % set parameter file here | |
22 paramsName='Normal'; | |
23 % choose probability because spikes not used to evaluate BM | |
24 AN_spikesOrProbability='probability'; | |
25 % add parameter changes here. paramchanges is a cell array of command | |
26 % strings | |
27 paramChanges={}; | |
28 | |
29 % DRNL channels | |
30 lowestBF=1000; highestBF= 8000; numChannels=41; | |
31 % includes BFs at 250 500 1000 2000 4000 8000 (for 11, 21, 31 BFs) | |
32 % the output from all these filters will be combined to form the OAE | |
33 BFlist=round(logspace(log10(lowestBF), log10(highestBF), numChannels)); | |
34 | |
35 if nargin<2 | |
36 toneFrequencies= 2000; % single pure tone test | |
37 toneFrequencies=[ 2000 3000]; % F1 F2 for DPOAEs | |
38 toneFrequencies=[ 5000 6000]; % F1 F2 | |
39 end | |
40 duration=0.05; % seconds | |
41 duration=0.05; % seconds | |
42 rampDuration=.005; | |
43 | |
44 if nargin<1 | |
45 leveldBSPL=70; % dB SPL | |
46 end | |
47 amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak level) | |
48 | |
49 % Create pure stimulus | |
50 sampleRate= 100000; | |
51 dt=1/sampleRate; | |
52 time=dt: dt: duration; | |
53 inputSignal=sum(sin(2*pi*toneFrequencies'*time), 1); | |
54 inputSignal=amp*inputSignal; | |
55 | |
56 % apply ramps | |
57 if rampDuration>0.5*duration, rampDuration=duration/2; end | |
58 rampTime=dt:dt:rampDuration; | |
59 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ... | |
60 ones(1,length(time)-length(rampTime))]; | |
61 inputSignal=inputSignal.*ramp; % at the beginning | |
62 ramp=fliplr(ramp); | |
63 inputSignal=inputSignal.*ramp; % and at the end | |
64 | |
65 % add 10 ms silence | |
66 silenceDuration=0.01; | |
67 silence= zeros(1,round(silenceDuration/dt)); | |
68 inputSignal= [silence inputSignal silence]; | |
69 time=dt: dt: dt*length(inputSignal); | |
70 | |
71 %% delare 'showMap' options to control graphical output | |
72 showMapOptions.printModelParameters=0; % prints all parameters | |
73 showMapOptions.showModelOutput=1; % plot of all stages | |
74 showMapOptions.printFiringRates=1; % prints stage activity levels | |
75 showMapOptions.showACF=0; % shows SACF (probability only) | |
76 showMapOptions.showEfferent=0; % tracks of AR and MOC | |
77 showMapOptions.surfAN=0; % 2D plot of HSR response | |
78 showMapOptions.surfSpikes=0; % 2D plot of spikes histogram | |
79 showMapOptions.ICrates=0; % IC rates by CNtauGk | |
80 | |
81 | |
82 MAP1_14(inputSignal, 1/dt, BFlist, ... | |
83 paramsName, AN_spikesOrProbability, paramChanges); | |
84 | |
85 UTIL_showMAP(showMapOptions) | |
86 pause(0.1) | |
87 | |
88 % use this to produce a comnplete record of model parameters | |
89 % UTIL_showAllMAPStructures | |
90 | |
91 OAE=sum(DRNLoutput); | |
92 figure(5),subplot(2,1,1) | |
93 plot(time,OAE) | |
94 title(['F=' num2str(toneFrequencies)]) | |
95 [fft_powerdB, fft_phase, frequencies, fft_ampdB]= UTIL_FFT(OAE, dt, 1e-15); | |
96 idx=find(frequencies<1e4); | |
97 | |
98 figure(5),subplot(2,1,2) | |
99 plot(frequencies(idx),fft_ampdB(idx)) | |
100 title ('FFT of OAE') | |
101 ylabel('dB') | |
102 ylim([0 100]) | |
103 grid on | |
104 | |
105 path(restorePath); |