Advertisement
Guest User

pgo matlab data evaluation script

a guest
Jul 27th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.19 KB | None | 0 0
  1.  
  2.  
  3. % wholedata = tdfread('spawns0.json');
  4. % wholedata = rmfield(wholedata,'Name');
  5.  
  6. scantimes = wholedata.Time;
  7. timediff = [900;diff(scantimes)];
  8.  
  9.  
  10.  
  11. spawnids=unique(wholedata.SpawnID);
  12.  
  13. spawnsplit=cell(length(spawnids),1);
  14. names=fieldnames(wholedata);
  15.  
  16. excepttimes=zeros(5000,1);
  17. intervalexctimes=zeros(5000,1);
  18. ct_all=0;
  19. ct_timebug=0;
  20. ct_timesave=0;
  21. ct_possexcept=0;
  22. ct_except=0;
  23. ct_intervalexc=0;
  24. all.spawntimes=NaN(length(spawnids),1);
  25. all.spawnlengths=NaN(length(spawnids),1);
  26. all.spawninterval=NaN(length(spawnids),1);
  27. for a=1:length(spawnids)
  28.    thisspawn=(wholedata.SpawnID==spawnids(a));
  29.    spawnsplit{a}=struct();
  30.    
  31.    for i=1:length(names)
  32.        spawnsplit{a}.(names{i})=wholedata.(names{i})(thisspawn);
  33.    end
  34.    timebug=(spawnsplit{a}.Time2Hidden < 0);
  35.  
  36.    [~,ind_unique]=unique(spawnsplit{a}.encounterID);
  37.    keep=false(length(timebug),1);
  38.    keep(ind_unique)=true;
  39.    
  40.    while sum(timebug)>0
  41.       ct_timebug=ct_timebug+1;
  42.       firstbug=find(timebug,1,'first');
  43.       thisencounter=(spawnsplit{a}.encounterID == spawnsplit{a}.encounterID(firstbug));
  44.       keep(thisencounter)=false;
  45.       isnormal=~timebug & thisencounter;
  46.       if sum(isnormal)>0
  47.           firstnormal=find(isnormal,1,'first');
  48.           ct_timesave=ct_timesave+1;
  49.           isbugged=timebug & thisencounter;
  50.           lastbug = find(isbugged,1,'last');
  51.  
  52.           time15min=spawnsplit{a}.spawnTime(firstnormal);
  53.  
  54.           time1stseen=spawnsplit{a}.Time(firstbug);
  55.           realspawntime=time15min-ceil((time15min-time1stseen)/60/15)*60*15;
  56.  
  57.           spawnsplit{a}.spawnTime(firstnormal) = realspawntime;
  58.           keep(firstnormal)=true;
  59.       end
  60.       timebug(thisencounter)=false;
  61.    end
  62.     spawnsplit{a}.lat=spawnsplit{a}.lat(1);
  63.     spawnsplit{a}.lng=spawnsplit{a}.lng(1);
  64.     spawnsplit{a}.SpawnID = spawnsplit{a}.SpawnID(1);
  65.     for i=[1,5,6,7,8]
  66.         spawnsplit{a}.(names{i})=spawnsplit{a}.(names{i})(keep);
  67.     end
  68.     spawnsplit{a}.spawnlength=spawnsplit{a}.Time+spawnsplit{a}.Time2Hidden-spawnsplit{a}.spawnTime;
  69.     spawnsplit{a}.spawninterval=[111111;diff(spawnsplit{a}.spawnTime)/3600];
  70.     spawnsplit{a}.spawnTime=mod(spawnsplit{a}.spawnTime,3600)/60;
  71. %%%%%%%%%%%%%%%%%
  72.     [valU,~,indU]=unique(round(spawnsplit{a}.spawnTime));
  73.     count=zeros(length(valU),1);
  74.     for i=1:length(valU)
  75.         count(i)=sum(indU==i);      
  76.     end
  77.    [~,indU]=max(count);
  78.    spawntime_mean=valU(indU);
  79.    
  80.    exc=(round(spawnsplit{a}.spawnTime)~=spawntime_mean);
  81.    ct_possexcept=ct_possexcept+sum(exc);
  82.    excvals=find(exc);
  83.    for i=1:sum(exc)
  84.       time1stseen=spawnsplit{a}.Time(excvals(i));
  85.       indx=find(scantimes==time1stseen,1,'first');
  86.       excepttimes(ct_except+1)=indx;
  87.       ct_except=ct_except+1;
  88.    end
  89.  
  90. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  91.  
  92.     [valU,~,indU]=unique(round(spawnsplit{a}.spawninterval));
  93.     count=zeros(length(valU),1);
  94.     for i=1:length(valU)
  95.         count(i)=sum(indU==i);      
  96.     end
  97.    [~,indU]=max(count);
  98.    spawninterval_mean=valU(indU);
  99.    
  100.    exc2=(round(spawnsplit{a}.spawninterval)~=spawninterval_mean);
  101.    ct_possexcept=ct_possexcept+sum(exc2);
  102.    excvals=find(exc2);
  103.    for i=1:sum(exc2)
  104.       time1stseen=spawnsplit{a}.Time(excvals(i));
  105.       indx=find(scantimes==time1stseen,1,'first');
  106.       intervalexctimes(ct_intervalexc+1)=indx;
  107.       ct_intervalexc=ct_intervalexc+1;
  108.    end
  109.    exc=exc|exc2;
  110.    ct_all=ct_all+sum(~exc);  
  111.    
  112. %%%%%%%%%%%%%%%%%%%%%%%
  113.    spawnsplit{a} = rmfield(spawnsplit{a},[{'Time'};{'Time2Hidden'};{'encounterID'}]);
  114.    newnames=fieldnames(spawnsplit{a});
  115.     for i=[1,5,6,7]
  116.         spawnsplit{a}.(newnames{i})=spawnsplit{a}.(newnames{i})(~exc);
  117.     end
  118.    
  119.    spawnsplit{a}.count=length(spawnsplit{a}.id);
  120.    spawnsplit{a}.id = unique(spawnsplit{a}.id);
  121.    spawnsplit{a}.spawnTime = unique(spawnsplit{a}.spawnTime);
  122.    spawnsplit{a}.spawnlength = unique(round(spawnsplit{a}.spawnlength));
  123.    spawnsplit{a}.spawninterval = unique(round(spawnsplit{a}.spawninterval));
  124.    
  125.    if ~isempty(spawnsplit{a}.spawnTime)
  126.        all.spawntimes(a)=spawnsplit{a}.spawnTime;
  127.        all.spawnlengths(a)=spawnsplit{a}.spawnlength;
  128.        all.spawninterval(a)=spawnsplit{a}.spawninterval;
  129.    end
  130.  
  131. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement