Mercurial > hg > aimmat
view aim-mat/tools/@frame/crosschannelinfluence.m @ 4:537f939baef0 tip
various bug fixes and changed copyright message
author | Stefan Bleeck <bleeck@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 14:37:17 +0100 |
parents | 74dedb26614d |
children |
line wrap: on
line source
% method of class @frame % % INPUT VALUES: % % RETURN VALUE: % % % (c) 2003, University of Cambridge, Medical Research Council % Stefan Bleeck (stefan@bleeck.de) % http://www.mrc-cbu.cam.ac.uk/cnbh/aimmanual % $Date: 2003/01/17 16:57:46 $ % $Revision: 1.3 $ function ret=crosschannelinfluence(fr,erb) % usage: ret=crosschannelinfluence(fr,erb) % calculates the difference of the maxima from one channel to the next % so many channels are calculated as in erb if nargin < 2 erb=1; end break_freq=2000; ret=frame(fr); vals=getvalues(fr); vals=zeros(size(vals)); nr_chan=getnrchannels(fr); cfs=getcf(fr); for i=1:nr_chan chan=getsinglechannel(fr,i); [maxpos{i},minpos{i},maxs{i},mins{i}]=getminmax(chan); end sig=chan; % KopieKonstruktor for i=1:nr_chan-erb fre=cfs(i); t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal if fre>break_freq break end nr_max=length(maxpos{i}); difmin=zeros(nr_max,1); for k=i+1:i+erb+1 for j=1:nr_max; xx=maxpos{i}(j); maxleft=getmaximumleftof(xx+t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k}); maxright=getmaximumrightof(xx-t_oszi/10,maxpos{k},minpos{k},maxs{k},mins{k}); if isempty(maxleft) difleft=t_oszi; else difleft=abs(xx-maxleft); end if isempty(maxright) difright=t_oszi; else difright=abs(maxright-xx); end difmin(j)=difmin(j)+min(difleft,difright); end end % difmin=difmin*200; difmin=difmin/t_oszi; difmin=1-difmin; difmin(find(difmin < 0))=0; sig=buildspikesfrompoints(sig,maxpos{i},difmin); vals(i,:)=getvalues(sig)'; end ret=setvalues(ret,vals); return prev_chan=getsinglechannel(fr,1); [prevmaxpos,prevminpos,prevmaxs,prevmins]=getminmax(prev_chan); sig=prev_chan; for i=2:nr_chan fre=cfs(i); t_oszi=1/fre; % Die Zeitspanne zweier natürlicher peaks in dem Kanal if fre>break_freq break end now_chan=getsinglechannel(fr,i); [nowmaxpos,nowminpos,nowmaxs,nowmins]=getminmax(now_chan); difmin=zeros(size(nowmaxpos)); for j=1:length(nowmaxpos); xx=nowmaxpos(j); difleft=getmaximumleftof(xx+t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins); difright=getmaximumrightof(xx-t_oszi/10,prevmaxpos,prevminpos,prevmaxs,prevmins); if isempty(difleft) difleft=inf; else difleft=abs(xx-difleft); end if isempty(difright) difright=inf; else difright=abs(difright-xx); end difmin(j)=min(difleft,difright); end difmin=1-(difmin/t_oszi); % sig=buildfrompoints(sig,nowmaxpos,difmin); sig=buildspikesfrompoints(sig,nowmaxpos,difmin); vals(i,:)=getvalues(sig)'; prev_chan=now_chan; prevmaxpos=nowmaxpos; prevminpos=nowminpos; prevmaxs=nowmaxs; prevmins=nowmins; s=0; end ret=setvalues(ret,vals);