forked from ProcessNetwork/ProcessNetwork_Software
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathShannonBitsWrapper.m
44 lines (36 loc) · 2.02 KB
/
ShannonBitsWrapper.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
function [HXt, HYw, HYf, HXtYw, HXtYf, HYwYf, HXtYwYf, I, T, nCounts] ...
= ShannonBitsWrapper(classifiedData, lag, nTuples, nBinMat, lagRange, nYw, NoDataCode)
[~,nSignals] = size(classifiedData);
classifiedData(classifiedData == NoDataCode) = NaN;
HXt = NaN( nSignals, nSignals );
HYw = NaN( nSignals, nSignals );
HYf = NaN( nSignals, nSignals );
HXtYw = NaN( nSignals, nSignals );
HXtYf = NaN( nSignals, nSignals );
HYwYf = NaN( nSignals, nSignals );
HXtYwYf = NaN( nSignals, nSignals );
I = NaN( nSignals, nSignals );
T = NaN( nSignals, nSignals );
nCounts = NaN( nSignals, nSignals );
for sX=1:nSignals
for sY=1:nSignals
%CONSTRUCT THREE-COLUMN MATRIX WITH COLUMNS TIME-SHIFTED
XtSTART = max([lagRange(2) nYw])+1-lag;
YwSTART = max([lagRange(2) nYw])+1-nYw;
YfSTART = max([lagRange(2) nYw])+1;
tupleMat=NaN(nTuples,3);
tupleMat(:,1)=classifiedData(XtSTART:XtSTART+nTuples-1,sX); %Leading Node Xt (lag tau earlier than present)
tupleMat(:,2)=classifiedData(YwSTART:YwSTART+nTuples-1,sY); %Led Node Yw (present time)
tupleMat(:,3)=classifiedData(YfSTART:YfSTART+nTuples-1,sY); %Led Node Yf (one timestep in future)
%CHECK TO ENSURE TUPLEMAT HAS AT LEAST ONE COMPLETE ROW OF DATA
if sum(sum(isnan(tupleMat),2) > 0) == nTuples
logwrite(['Warning: no data in tupleMat, skipping sX = ' num2str(sX) ', sY = ' num2str(sY) ', lag = ' num2str(lag)],1)
continue
end
%CALCULATE ENTROPIES FROM TUPLEMAT
[C, nCounts(sX,sY)] = getCountMat( tupleMat, nBinMat, sX, sY, NaN);
[HXt(sX,sY),HYw(sX,sY),HYf(sX,sY),HXtYw(sX,sY),HXtYf(sX,sY),HYwYf(sX,sY),HXtYwYf(sX,sY)]=GetShannonBits( C, nCounts(sX,sY) );
I(sX,sY) = HXt(sX,sY) + HYf(sX,sY) - HXtYf(sX,sY);
T(sX,sY) = HXtYw(sX,sY) + HYwYf(sX,sY) - HYw(sX,sY) - HXtYwYf(sX,sY);
end
end