Files
@ 634d9c963986
Branch filter:
Location: AENC/switchchain/triangle_autocorrelations.m - annotation
634d9c963986
1.5 KiB
application/vnd.wolfram.mathematica.package
Add insertion sort for HH and timed time-evols
3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec 3e67925ef7ec | (* ::Package:: *)
(* ::Section:: *)
(*Data import*)
gsraw=Import[NotebookDirectory[]<>"data/graphdata_timeevol.m"];
(* gsraw=SortBy[gsraw,{#[[1,1]]&,#[[1,2]]&}]; (* Sort by n and then by tau. The {} forces a *stable* sort because otherwise Mathematica sorts also on triangle count and other things. *) *)
gdata=GatherBy[gsraw,{#[[1,2]]&,#[[1,1]]&}];
(* Data format: *)
(* gdata[[ tau index, n index, run index , datatype index ]] *)
(* datatype index:
1: {n,tau}
2: #triangles time sequence
3: degree sequence
4: GCM1 starting triangle counts
5: GCM2 starting triangle counts
6: GCM1 time sequence
7: GCM2 time sequence
*)
nlabels=Map["n = "<>ToString[#]&,gdata[[1,All,1,1,1]]];
taulabels=Map["tau = "<>ToString[#]&,gdata[[All,1,1,1,2]]];
(* ::Section:: *)
(*Triangle counts autocorrelation*)
doAutoCorrelate[dataset_,maxlag_]:=Module[{avg,data2,result},
avg=Mean[dataset];
data2=dataset-avg;
result=ParallelTable[Mean[data2[[1+lag;;]]*data2[[;;-1-lag]]],{lag,0,maxlag}];
result=result/result[[1]]
]
doPeriodicAutocorrelate[dataset_,maxlag_]:=Module[{f,result},
f=Fourier[dataset-Mean[dataset]];
result=InverseFourier[f*Conjugate[f]];
result=result[[1;;Min[Floor[Length[result]/2],maxlag]]];
result=Chop[result];
result=result/result[[1]]
]
dataX=gdata[[1,1]][[3,2]];
ListPlot[dataX,Joined->True,PlotRange->All]
dataX=dataX[[15000;;50000]];
cor1=doAutoCorrelate[dataX,2000];
cor2=doPeriodicAutocorrelate[dataX,20000];
ListPlot[{cor1,cor2},Joined->True,PlotRange->{-0.5,1}]
|