Files
@ 7dbca3656ee1
Branch filter:
Location: AENC/switchchain/triangle_autocorrelations.m - annotation
7dbca3656ee1
1.5 KiB
application/vnd.wolfram.mathematica.package
Add proper creationfreq simulation and plots
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}]
|