tomwalters@0: % method of class @frame tomwalters@0: % tomwalters@0: % INPUT VALUES: tomwalters@0: % tomwalters@0: % RETURN VALUE: tomwalters@0: % tomwalters@0: % tomwalters@0: % (c) 2003, University of Cambridge, Medical Research Council tomwalters@0: % Stefan Bleeck (stefan@bleeck.de) tomwalters@0: % http://www.mrc-cbu.cam.ac.uk/cnbh/aimmanual tomwalters@0: % $Date: 2003/01/17 16:57:46 $ tomwalters@0: % $Revision: 1.3 $ tomwalters@0: tomwalters@0: function ret=crosschannelinfluence(fr,erb) tomwalters@0: % usage: ret=crosschannelinfluence(fr,erb) tomwalters@0: % calculates the difference of the maxima from one channel to the next tomwalters@0: % so many channels are calculated as in erb tomwalters@0: tomwalters@0: if nargin < 2 tomwalters@0: erb=1; tomwalters@0: end tomwalters@0: tomwalters@0: break_freq=2000; tomwalters@0: tomwalters@0: ret=frame(fr); tomwalters@0: tomwalters@0: vals=getvalues(fr); tomwalters@0: vals=zeros(size(vals)); tomwalters@0: tomwalters@0: nr_chan=getnrchannels(fr); tomwalters@0: cfs=getcf(fr); tomwalters@0: tomwalters@0: for i=1:nr_chan tomwalters@0: chan=getsinglechannel(fr,i); tomwalters@0: [maxpos{i},minpos{i},maxs{i},mins{i}]=getminmax(chan); tomwalters@0: end tomwalters@0: sig=chan; % KopieKonstruktor tomwalters@0: tomwalters@0: for i=1:nr_chan-erb tomwalters@0: fre=cfs(i); tomwalters@0: t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal tomwalters@0: tomwalters@0: if fre>break_freq tomwalters@0: break tomwalters@0: end tomwalters@0: tomwalters@0: nr_max=length(maxpos{i}); tomwalters@0: difmin=zeros(nr_max,1); tomwalters@0: for k=i+1:i+erb+1 tomwalters@0: for j=1:nr_max; tomwalters@0: xx=maxpos{i}(j); tomwalters@0: maxleft=getmaximumleftof(xx+t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k}); tomwalters@0: maxright=getmaximumrightof(xx-t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k}); tomwalters@0: if isempty(maxleft) tomwalters@0: difleft=t_oszi; tomwalters@0: else tomwalters@0: difleft=abs(xx-maxleft); tomwalters@0: end tomwalters@0: if isempty(maxright) tomwalters@0: difright=t_oszi; tomwalters@0: else tomwalters@0: difright=abs(maxright-xx); tomwalters@0: end tomwalters@0: difmin(j)=difmin(j)+min(difleft,difright); tomwalters@0: end tomwalters@0: end tomwalters@0: % difmin=difmin*200; tomwalters@0: difmin=difmin/t_oszi; tomwalters@0: difmin=1-difmin; tomwalters@0: difmin(find(difmin < 0))=0; tomwalters@0: tomwalters@0: sig=buildspikesfrompoints(sig,maxpos{i},difmin); tomwalters@0: vals(i,:)=getvalues(sig)'; tomwalters@0: end tomwalters@0: tomwalters@0: ret=setvalues(ret,vals); tomwalters@0: tomwalters@0: return tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: prev_chan=getsinglechannel(fr,1); tomwalters@0: [prevmaxpos,prevminpos,prevmaxs,prevmins]=getminmax(prev_chan); tomwalters@0: sig=prev_chan; tomwalters@0: tomwalters@0: for i=2:nr_chan tomwalters@0: fre=cfs(i); tomwalters@0: t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal tomwalters@0: tomwalters@0: if fre>break_freq tomwalters@0: break tomwalters@0: end tomwalters@0: tomwalters@0: now_chan=getsinglechannel(fr,i); tomwalters@0: [nowmaxpos,nowminpos,nowmaxs,nowmins]=getminmax(now_chan); tomwalters@0: difmin=zeros(size(nowmaxpos)); tomwalters@0: tomwalters@0: for j=1:length(nowmaxpos); tomwalters@0: xx=nowmaxpos(j); tomwalters@0: difleft=getmaximumleftof(xx+t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins); tomwalters@0: difright=getmaximumrightof(xx-t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins); tomwalters@0: if isempty(difleft) tomwalters@0: difleft=inf; tomwalters@0: else tomwalters@0: difleft=abs(xx-difleft); tomwalters@0: end tomwalters@0: if isempty(difright) tomwalters@0: difright=inf; tomwalters@0: else tomwalters@0: difright=abs(difright-xx); tomwalters@0: end tomwalters@0: difmin(j)=min(difleft,difright); tomwalters@0: end tomwalters@0: difmin=1-(difmin/t_oszi); tomwalters@0: % sig=buildfrompoints(sig,nowmaxpos,difmin); tomwalters@0: tomwalters@0: sig=buildspikesfrompoints(sig,nowmaxpos,difmin); tomwalters@0: tomwalters@0: vals(i,:)=getvalues(sig)'; tomwalters@0: tomwalters@0: prev_chan=now_chan; tomwalters@0: prevmaxpos=nowmaxpos; tomwalters@0: prevminpos=nowminpos; tomwalters@0: prevmaxs=nowmaxs; tomwalters@0: prevmins=nowmins; tomwalters@0: s=0; tomwalters@0: end tomwalters@0: tomwalters@0: ret=setvalues(ret,vals); tomwalters@0: