rmeddis@38
|
1 function [mappediih,centerfreqs] = map_iih_onto_log(iih,numchannels,sfreq)
|
rmeddis@38
|
2
|
rmeddis@38
|
3 %function to map an IPIH from the interval axis onto the frequency axis
|
rmeddis@38
|
4 %with no overlap and mean firing rate.
|
rmeddis@38
|
5 %
|
rmeddis@38
|
6 % Tim Juergens, September 2011
|
rmeddis@38
|
7 %
|
rmeddis@38
|
8 % input: iih: IPIH with dimensions interval (1) and time step (2)
|
rmeddis@38
|
9 % the first dimension translates to time using the actual
|
rmeddis@38
|
10 % sampling frequency
|
rmeddis@38
|
11 % numchannels: number of desired channels
|
rmeddis@38
|
12 % sfreq: sampling frequency
|
rmeddis@38
|
13 % output: mappediih: IPIH with dimensions frequency channel (1) and time
|
rmeddis@38
|
14 % step (2)
|
rmeddis@38
|
15 % centerfreqs: center frequencies of the channels of mappediih
|
rmeddis@38
|
16
|
rmeddis@38
|
17 ctr_intervals = [1/sfreq:1/sfreq:size(iih,1)/sfreq];
|
rmeddis@38
|
18 lowestBF=1/ctr_intervals(end);
|
rmeddis@38
|
19 highestBF=10000;
|
rmeddis@38
|
20
|
rmeddis@38
|
21 borderfreqs = logspace(log10(lowestBF),log10(highestBF),numchannels+1);
|
rmeddis@38
|
22
|
rmeddis@38
|
23 for iCounter = 1:numchannels
|
rmeddis@38
|
24 centerfreqs(iCounter)=(borderfreqs(iCounter)+borderfreqs(iCounter+1))/2;
|
rmeddis@38
|
25 end
|
rmeddis@38
|
26
|
rmeddis@38
|
27 for iCounter = 1:length(borderfreqs) %find the indices that correspond to the borderfrequencies of the BF filters
|
rmeddis@38
|
28 [tmp,channelbordersIPIindex(iCounter)]=min(abs(borderfreqs(iCounter)-1./ctr_intervals));
|
rmeddis@38
|
29 end
|
rmeddis@38
|
30
|
rmeddis@38
|
31 for iCounter = 1:length(centerfreqs)
|
rmeddis@38
|
32 %mapping with one interval sample overlap
|
rmeddis@38
|
33 mappediih(iCounter,:) = mean(iih(channelbordersIPIindex(end-iCounter+1):channelbordersIPIindex(end-iCounter),:));
|
rmeddis@38
|
34 end
|
rmeddis@38
|
35
|
rmeddis@38
|
36
|
rmeddis@38
|
37
|
rmeddis@38
|
38 % OPTIONAL PLOTTING
|
rmeddis@38
|
39 figure
|
rmeddis@38
|
40 YTickIdx = 1:floor(numel(centerfreqs)/6):numel(centerfreqs);
|
rmeddis@38
|
41 YTickIdxRev = numel(centerfreqs)+1-YTickIdx;
|
rmeddis@38
|
42 if ~isempty(gca)
|
rmeddis@38
|
43 axes(gca); %#ok<MAXES>
|
rmeddis@38
|
44 imagesc(mappediih);
|
rmeddis@38
|
45 set(gca, 'YTick', YTickIdx);
|
rmeddis@38
|
46 set(gca, 'YTickLabel', num2str( centerfreqs(YTickIdxRev)', '%0.0f' ));
|
rmeddis@38
|
47 ylabel('cf in Hz')
|
rmeddis@38
|
48 end
|