Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % wholedata = tdfread('spawns0.json');
- % wholedata = rmfield(wholedata,'Name');
- scantimes = wholedata.Time;
- timediff = [900;diff(scantimes)];
- spawnids=unique(wholedata.SpawnID);
- spawnsplit=cell(length(spawnids),1);
- names=fieldnames(wholedata);
- excepttimes=zeros(5000,1);
- intervalexctimes=zeros(5000,1);
- ct_all=0;
- ct_timebug=0;
- ct_timesave=0;
- ct_possexcept=0;
- ct_except=0;
- ct_intervalexc=0;
- all.spawntimes=NaN(length(spawnids),1);
- all.spawnlengths=NaN(length(spawnids),1);
- all.spawninterval=NaN(length(spawnids),1);
- for a=1:length(spawnids)
- thisspawn=(wholedata.SpawnID==spawnids(a));
- spawnsplit{a}=struct();
- for i=1:length(names)
- spawnsplit{a}.(names{i})=wholedata.(names{i})(thisspawn);
- end
- timebug=(spawnsplit{a}.Time2Hidden < 0);
- [~,ind_unique]=unique(spawnsplit{a}.encounterID);
- keep=false(length(timebug),1);
- keep(ind_unique)=true;
- while sum(timebug)>0
- ct_timebug=ct_timebug+1;
- firstbug=find(timebug,1,'first');
- thisencounter=(spawnsplit{a}.encounterID == spawnsplit{a}.encounterID(firstbug));
- keep(thisencounter)=false;
- isnormal=~timebug & thisencounter;
- if sum(isnormal)>0
- firstnormal=find(isnormal,1,'first');
- ct_timesave=ct_timesave+1;
- isbugged=timebug & thisencounter;
- lastbug = find(isbugged,1,'last');
- time15min=spawnsplit{a}.spawnTime(firstnormal);
- time1stseen=spawnsplit{a}.Time(firstbug);
- realspawntime=time15min-ceil((time15min-time1stseen)/60/15)*60*15;
- spawnsplit{a}.spawnTime(firstnormal) = realspawntime;
- keep(firstnormal)=true;
- end
- timebug(thisencounter)=false;
- end
- spawnsplit{a}.lat=spawnsplit{a}.lat(1);
- spawnsplit{a}.lng=spawnsplit{a}.lng(1);
- spawnsplit{a}.SpawnID = spawnsplit{a}.SpawnID(1);
- for i=[1,5,6,7,8]
- spawnsplit{a}.(names{i})=spawnsplit{a}.(names{i})(keep);
- end
- spawnsplit{a}.spawnlength=spawnsplit{a}.Time+spawnsplit{a}.Time2Hidden-spawnsplit{a}.spawnTime;
- spawnsplit{a}.spawninterval=[111111;diff(spawnsplit{a}.spawnTime)/3600];
- spawnsplit{a}.spawnTime=mod(spawnsplit{a}.spawnTime,3600)/60;
- %%%%%%%%%%%%%%%%%
- [valU,~,indU]=unique(round(spawnsplit{a}.spawnTime));
- count=zeros(length(valU),1);
- for i=1:length(valU)
- count(i)=sum(indU==i);
- end
- [~,indU]=max(count);
- spawntime_mean=valU(indU);
- exc=(round(spawnsplit{a}.spawnTime)~=spawntime_mean);
- ct_possexcept=ct_possexcept+sum(exc);
- excvals=find(exc);
- for i=1:sum(exc)
- time1stseen=spawnsplit{a}.Time(excvals(i));
- indx=find(scantimes==time1stseen,1,'first');
- excepttimes(ct_except+1)=indx;
- ct_except=ct_except+1;
- end
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- [valU,~,indU]=unique(round(spawnsplit{a}.spawninterval));
- count=zeros(length(valU),1);
- for i=1:length(valU)
- count(i)=sum(indU==i);
- end
- [~,indU]=max(count);
- spawninterval_mean=valU(indU);
- exc2=(round(spawnsplit{a}.spawninterval)~=spawninterval_mean);
- ct_possexcept=ct_possexcept+sum(exc2);
- excvals=find(exc2);
- for i=1:sum(exc2)
- time1stseen=spawnsplit{a}.Time(excvals(i));
- indx=find(scantimes==time1stseen,1,'first');
- intervalexctimes(ct_intervalexc+1)=indx;
- ct_intervalexc=ct_intervalexc+1;
- end
- exc=exc|exc2;
- ct_all=ct_all+sum(~exc);
- %%%%%%%%%%%%%%%%%%%%%%%
- spawnsplit{a} = rmfield(spawnsplit{a},[{'Time'};{'Time2Hidden'};{'encounterID'}]);
- newnames=fieldnames(spawnsplit{a});
- for i=[1,5,6,7]
- spawnsplit{a}.(newnames{i})=spawnsplit{a}.(newnames{i})(~exc);
- end
- spawnsplit{a}.count=length(spawnsplit{a}.id);
- spawnsplit{a}.id = unique(spawnsplit{a}.id);
- spawnsplit{a}.spawnTime = unique(spawnsplit{a}.spawnTime);
- spawnsplit{a}.spawnlength = unique(round(spawnsplit{a}.spawnlength));
- spawnsplit{a}.spawninterval = unique(round(spawnsplit{a}.spawninterval));
- if ~isempty(spawnsplit{a}.spawnTime)
- all.spawntimes(a)=spawnsplit{a}.spawnTime;
- all.spawnlengths(a)=spawnsplit{a}.spawnlength;
- all.spawninterval(a)=spawnsplit{a}.spawninterval;
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement