annotate 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
rev   line source
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