tomwalters@0
|
1 % method of class @frame
|
tomwalters@0
|
2 %
|
tomwalters@0
|
3 % INPUT VALUES:
|
tomwalters@0
|
4 %
|
tomwalters@0
|
5 % RETURN VALUE:
|
tomwalters@0
|
6 %
|
tomwalters@0
|
7 %
|
tomwalters@0
|
8 % (c) 2003, University of Cambridge, Medical Research Council
|
tomwalters@0
|
9 % Stefan Bleeck (stefan@bleeck.de)
|
tomwalters@0
|
10 % http://www.mrc-cbu.cam.ac.uk/cnbh/aimmanual
|
tomwalters@0
|
11 % $Date: 2003/01/17 16:57:46 $
|
tomwalters@0
|
12 % $Revision: 1.3 $
|
tomwalters@0
|
13
|
tomwalters@0
|
14 function ret=crosschannelinfluence(fr,erb)
|
tomwalters@0
|
15 % usage: ret=crosschannelinfluence(fr,erb)
|
tomwalters@0
|
16 % calculates the difference of the maxima from one channel to the next
|
tomwalters@0
|
17 % so many channels are calculated as in erb
|
tomwalters@0
|
18
|
tomwalters@0
|
19 if nargin < 2
|
tomwalters@0
|
20 erb=1;
|
tomwalters@0
|
21 end
|
tomwalters@0
|
22
|
tomwalters@0
|
23 break_freq=2000;
|
tomwalters@0
|
24
|
tomwalters@0
|
25 ret=frame(fr);
|
tomwalters@0
|
26
|
tomwalters@0
|
27 vals=getvalues(fr);
|
tomwalters@0
|
28 vals=zeros(size(vals));
|
tomwalters@0
|
29
|
tomwalters@0
|
30 nr_chan=getnrchannels(fr);
|
tomwalters@0
|
31 cfs=getcf(fr);
|
tomwalters@0
|
32
|
tomwalters@0
|
33 for i=1:nr_chan
|
tomwalters@0
|
34 chan=getsinglechannel(fr,i);
|
tomwalters@0
|
35 [maxpos{i},minpos{i},maxs{i},mins{i}]=getminmax(chan);
|
tomwalters@0
|
36 end
|
tomwalters@0
|
37 sig=chan; % KopieKonstruktor
|
tomwalters@0
|
38
|
tomwalters@0
|
39 for i=1:nr_chan-erb
|
tomwalters@0
|
40 fre=cfs(i);
|
tomwalters@0
|
41 t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal
|
tomwalters@0
|
42
|
tomwalters@0
|
43 if fre>break_freq
|
tomwalters@0
|
44 break
|
tomwalters@0
|
45 end
|
tomwalters@0
|
46
|
tomwalters@0
|
47 nr_max=length(maxpos{i});
|
tomwalters@0
|
48 difmin=zeros(nr_max,1);
|
tomwalters@0
|
49 for k=i+1:i+erb+1
|
tomwalters@0
|
50 for j=1:nr_max;
|
tomwalters@0
|
51 xx=maxpos{i}(j);
|
tomwalters@0
|
52 maxleft=getmaximumleftof(xx+t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k});
|
tomwalters@0
|
53 maxright=getmaximumrightof(xx-t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k});
|
tomwalters@0
|
54 if isempty(maxleft)
|
tomwalters@0
|
55 difleft=t_oszi;
|
tomwalters@0
|
56 else
|
tomwalters@0
|
57 difleft=abs(xx-maxleft);
|
tomwalters@0
|
58 end
|
tomwalters@0
|
59 if isempty(maxright)
|
tomwalters@0
|
60 difright=t_oszi;
|
tomwalters@0
|
61 else
|
tomwalters@0
|
62 difright=abs(maxright-xx);
|
tomwalters@0
|
63 end
|
tomwalters@0
|
64 difmin(j)=difmin(j)+min(difleft,difright);
|
tomwalters@0
|
65 end
|
tomwalters@0
|
66 end
|
tomwalters@0
|
67 % difmin=difmin*200;
|
tomwalters@0
|
68 difmin=difmin/t_oszi;
|
tomwalters@0
|
69 difmin=1-difmin;
|
tomwalters@0
|
70 difmin(find(difmin < 0))=0;
|
tomwalters@0
|
71
|
tomwalters@0
|
72 sig=buildspikesfrompoints(sig,maxpos{i},difmin);
|
tomwalters@0
|
73 vals(i,:)=getvalues(sig)';
|
tomwalters@0
|
74 end
|
tomwalters@0
|
75
|
tomwalters@0
|
76 ret=setvalues(ret,vals);
|
tomwalters@0
|
77
|
tomwalters@0
|
78 return
|
tomwalters@0
|
79
|
tomwalters@0
|
80
|
tomwalters@0
|
81
|
tomwalters@0
|
82 prev_chan=getsinglechannel(fr,1);
|
tomwalters@0
|
83 [prevmaxpos,prevminpos,prevmaxs,prevmins]=getminmax(prev_chan);
|
tomwalters@0
|
84 sig=prev_chan;
|
tomwalters@0
|
85
|
tomwalters@0
|
86 for i=2:nr_chan
|
tomwalters@0
|
87 fre=cfs(i);
|
tomwalters@0
|
88 t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal
|
tomwalters@0
|
89
|
tomwalters@0
|
90 if fre>break_freq
|
tomwalters@0
|
91 break
|
tomwalters@0
|
92 end
|
tomwalters@0
|
93
|
tomwalters@0
|
94 now_chan=getsinglechannel(fr,i);
|
tomwalters@0
|
95 [nowmaxpos,nowminpos,nowmaxs,nowmins]=getminmax(now_chan);
|
tomwalters@0
|
96 difmin=zeros(size(nowmaxpos));
|
tomwalters@0
|
97
|
tomwalters@0
|
98 for j=1:length(nowmaxpos);
|
tomwalters@0
|
99 xx=nowmaxpos(j);
|
tomwalters@0
|
100 difleft=getmaximumleftof(xx+t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins);
|
tomwalters@0
|
101 difright=getmaximumrightof(xx-t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins);
|
tomwalters@0
|
102 if isempty(difleft)
|
tomwalters@0
|
103 difleft=inf;
|
tomwalters@0
|
104 else
|
tomwalters@0
|
105 difleft=abs(xx-difleft);
|
tomwalters@0
|
106 end
|
tomwalters@0
|
107 if isempty(difright)
|
tomwalters@0
|
108 difright=inf;
|
tomwalters@0
|
109 else
|
tomwalters@0
|
110 difright=abs(difright-xx);
|
tomwalters@0
|
111 end
|
tomwalters@0
|
112 difmin(j)=min(difleft,difright);
|
tomwalters@0
|
113 end
|
tomwalters@0
|
114 difmin=1-(difmin/t_oszi);
|
tomwalters@0
|
115 % sig=buildfrompoints(sig,nowmaxpos,difmin);
|
tomwalters@0
|
116
|
tomwalters@0
|
117 sig=buildspikesfrompoints(sig,nowmaxpos,difmin);
|
tomwalters@0
|
118
|
tomwalters@0
|
119 vals(i,:)=getvalues(sig)';
|
tomwalters@0
|
120
|
tomwalters@0
|
121 prev_chan=now_chan;
|
tomwalters@0
|
122 prevmaxpos=nowmaxpos;
|
tomwalters@0
|
123 prevminpos=nowminpos;
|
tomwalters@0
|
124 prevmaxs=nowmaxs;
|
tomwalters@0
|
125 prevmins=nowmins;
|
tomwalters@0
|
126 s=0;
|
tomwalters@0
|
127 end
|
tomwalters@0
|
128
|
tomwalters@0
|
129 ret=setvalues(ret,vals);
|
tomwalters@0
|
130
|