-
Notifications
You must be signed in to change notification settings - Fork 4
/
MccAlignment.m
52 lines (33 loc) · 1015 Bytes
/
MccAlignment.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function [DataAlign,corrCoeff,delay] = MccAlignment(s)
warning off
tmpSTF=s;
corrCoeff=zeros(size(tmpSTF,1),size(tmpSTF,1));delay=corrCoeff;
for y = 1 : size(tmpSTF,1)
for x = 1 : size(tmpSTF,1)
c_tmp = xcorr(tmpSTF(y,:),tmpSTF(x,:),'coeff');
tm1 = c_tmp((c_tmp==max(c_tmp)));
tm2 = c_tmp((c_tmp==min(c_tmp)));
TM = [tm1(1) tm2(1)];
cstore=find(abs(TM)==max(abs(TM)));
dtl=find(TM(cstore)==c_tmp);
delay(y,x) = dtl(1);
corrCoeff(y,x) = TM(cstore);clear tm cstore
clear c_tmp
end
end
for id = 1 : size(corrCoeff,1)
DT = delay(1,1) - mean(delay(id,:)) ;
% align the data
if DT > 0
datatmp = zeros(size(s(id,:)));
datatmp(DT+1:end)=s(id,1:end-DT);
elseif DT < 0
dt = abs(DT);
datatmp = zeros(size(s(id,:)));
datatmp(1:end-dt)=s(id,dt+1:end);
elseif DT==0
datatmp = s(id,:);
end
DataAlign(id,:) = datatmp; clear datatmp
end
delay=delay-delay(1,1);