function [MetroidData,AntalDJs,DJliste,Sektion,MetroidVariables] = getMetroidData(dataset)

% [MetroidData,AntalDJs,DJliste,Sektion,MetroidVariables] = getMetroidData(dataset);
% dataset=2;
% clearvars -except dataset Pines2 LLPCata DJnames LLPCataTest LLPCataAllPCJs LLPCataTestDJs Matrix AntalDJs DJ DJfilnavn fileNames
% TempoData2 = [];

% getFeature('rms',')


    clear MetroidData
    clear MetroidVariables
    
[Matrix,DJliste,Sektion] = getFeature('metroid',dataset)

feature = 'metroid';
Feature = 'Metroid';
MetroidData = [];

% henter data

% if hentdata == 1
%     clear [Matrix,AntalDJs,DJ,DJfilnavn,fileNames,AntalDJs]
%     [Matrix,DJ,DJfilnavn,fileNames,AntalDJs] = getFeature(feature,dataset);
% %else
% end

interval = 4;

AntalDJs = size(Matrix,1)

for Case = 1:AntalDJs   

    % parts{Case,1} = size(Matrix{iDJ,1},2)/dele;
    
    % udregner standardmål.

    if Matrix{Case,1} == [0]
    
        MeanMetroid(Case) = 0;
        MeanModeMetroid(Case) = 0;
        MedianMetroid(Case) = 0;
   StdMetroid(Case) = 0;
   ModeMetroid(Case) = 0;
   
    else
   MeanMetroid(Case) = nanmean(Matrix{Case,1}(3,:)); 
   MedianMetroid(Case) = nanmedian(Matrix{Case,1}(3,:));
   StdMetroid(Case) = nanstd(Matrix{Case,1}(3,:));
   ModeMetroid(Case) = mode(round(Matrix{Case,1}(3,:)/interval)*interval);
   
   %laver et mål for mode(Metroid) for hvert minut, baseret på mode i et interval á 4.
   
   if floor(size(Matrix{Case,1},2)/200)<1
          ModeLT{Case,1}=[];
          ModeMinuteMetroid{Case,1}(size(ModeLT{Case,1},2)+1:size(Matrix{Case,1},2)) = ModeMetroid(Case)
  
   else
   for j = 1:floor(size(Matrix{Case,1},2)/200)
   
   ModeLT{Case,1}((200*j-199):(200*j)) = mode(round(Matrix{Case,1}(3,(200*j-199):(200*j))/interval)*interval);
   
   end
   
  
   ModeMinuteMetroid{Case,1}(1:size(ModeLT{Case,1},2)) = ModeLT{Case,1};
   ModeMinuteMetroid{Case,1}(size(ModeLT{Case,1},2)+1:size(Matrix{Case,1},2)) = ModeLT{Case,1}(1,end);
   
   end
   MeanModeMetroid(Case) = mean(ModeMinuteMetroid{Case,1}(1,:));
   
   %plotter Metroidet og mode minuteMetroid
   
%    subplot(round(AntalDJs/2),2,Case)
%    plot(Matrix{Case,1}(1,:),Matrix{Case,1}(3,:),...
%        Matrix{Case,1}(1,:),ModeMinuteMetroid{Case,1}(1,:),'linewidth',2)
%    legend({'Metroid','Mode(Metroid each minute)'},'FontSize',8,'FontWeight','bold')
%    title(DJ{Case,1})
%    set(gcf,'name',feature)
    end
end


%plotter histogrammer
% figure;
% subplot(3,1,1)
% bar(1:AntalDJs,MeanMetroid)
% set(gca,'XTick',1:AntalDJs)
% set(gca,'XTickLabel',DJ)
% set(gca,'XTickLabelRotation',90)
% title([Feature, '/ mean']);
% 
% subplot(3,1,2);
% bar(1:AntalDJs,StdMetroid)
% set(gca,'XTick',1:AntalDJs)
% set(gca,'XTickLabel',DJ)
% set(gca,'XTickLabelRotation',90)
% title([Feature, '/ std']);
% 
% 
% subplot(3,1,3);
% bar(1:AntalDJs,ModeMetroid)
% set(gca,'XTick',1:AntalDJs)
% set(gca,'XTickLabel',DJ)
% set(gca,'XTickLabelRotation',90)
% title([Feature, '/ ModeMetroid']);
% 
% 





 figure;

 % prøver at udregne noget med synkoperinger. Idé: At Metroidmålinger uden
 % for det rigtige Metroid kan være indikator af synkoperinger. 
 % Går logaritmisk til værks. Fx er Metroid 120 og 240 er i denne udregning det samme.
 % mens at Metroid 180 målt ved mode(Metroid) 120 kan være udtryk noget 3 mod
 % 2. 
 
 
 
for Case = 1:AntalDJs

    if Matrix{Case,1}==[0]
        localskaevhed{Case,1}=0;
        MetroidSynco0(Case) = 0;
  MetroidSynco1(Case) = 0;
  MetroidSynco2(Case) = 0;
  MetroidSynco3(Case) = 0;
    else
        
sk{Case,1} = log2(Matrix{Case,1}(3,:))-(log2(ModeMinuteMetroid{Case,1}(1,:)));

% definerer skævhed som er et mål for hvor meget hver tidsenhed afviger fra
% mode*(1,2,3,4)
skaevhed{Case,1} = sk{Case,1}-floor(sk{Case,1});

%inddeler i intervaller fra 1-4, hvor mode +/- 12,5%. Kasser angiver logaritmen. 
%Pointen er hvis noget afviger 40% fra lokal mode, så kommer det i kasse 2. 
kasser = [0.1699,0.4594,0.7004,0.9069];
laengde = length(skaevhed{Case,1});

for i = 1:laengde
    
localskaevhed{Case,1}(i,:)= mod((skaevhed{Case,1} (i) > kasser(1))+(skaevhed{Case,1} (i) > kasser(2))+(skaevhed{Case,1} (i) > kasser(3))+(skaevhed{Case,1} (i) > kasser(4)),4);

end

% subplot(round(AntalDJs/2),2,Case)
%    hist(localskaevhed{Case,1},[0:4])
%    title(DJ{Case,1})
%    set(gcf,'name','Deviation from mode')
  
  % MetroidSynco(Case) = std(localskaevhed{Case,1});
  MetroidSynco0(Case) = sum(localskaevhed{Case,1}==0) / size(localskaevhed{Case,1},1);
  MetroidSynco1(Case) = sum(localskaevhed{Case,1}==1) / size(localskaevhed{Case,1},1);
  MetroidSynco2(Case) = sum(localskaevhed{Case,1}==2) / size(localskaevhed{Case,1},1);
  MetroidSynco3(Case) = sum(localskaevhed{Case,1}==3) / size(localskaevhed{Case,1},1);
  

    end 
end

MetroidData = [MeanMetroid',MedianMetroid',StdMetroid',ModeMetroid',MeanModeMetroid',MetroidSynco0',MetroidSynco1',MetroidSynco2',MetroidSynco3'];
MetroidVariables = {'MeanMetroid','MedianMetroid','StdMetroid','ModeMetroid','MeanModeMetroid','MetroidSynco0','MetroidSynco1','MetroidSynco2','MetroidSynco3'}
%%
% figure;
% 
% for i = 1:30
% subplot(round(30/3),3,i)
%     hist(Matrix{i,1}(3,:),100)
%     title(DJ(i))
% end
% 
% %%
% figure;
% 
% Case = 19;
% plot(Matrix{Case,1}(1,:),Matrix{Case,1}(3,:),...
%        Matrix{Case,1}(1,:),ModeMinuteMetroid{Case,1}(1,:),'linewidth',2)

% elseif dataset == 1
% 
% for dataset = 1:3;
% clearvars -except MetroidData2 dataset
% 
% feature = 'Metroid';
% hentdata = 1;
% Feature = 'Metroid';
% MetroidData = [];
% 
% % henter data
% 
% if hentdata == 1
%     clear [Matrix,AntalDJs,DJ,DJfilnavn,fileNames,AntalDJs]
%     [Matrix,DJ,DJfilnavn,fileNames,AntalDJs] = getFeature(feature,dataset);
% %else
% end
% 
% 
% figure;
% interval = 4;
% 
% for Case = 1:AntalDJs   
% 
%     % parts{Case,1} = size(Matrix{iDJ,1},2)/dele;
%     
%     % udregner standardmål.
% 
%     if Matrix{Case,1} == [0]
%     else
%    MeanMetroid(Case) = nanmean(Matrix{Case,1}(3,:)); 
%    MedianMetroid(Case) = nanmedian(Matrix{Case,1}(3,:));
%    StdMetroid(Case) = nanstd(Matrix{Case,1}(3,:));
%    ModeMetroid(Case) = mode(round(Matrix{Case,1}(3,:)/interval)*interval);
%    
%    %laver et mål for mode(Metroid) for hvert minut, baseret på mode i et interval á 4.
%    
%    if floor(size(Matrix{Case,1},2)/200)<1
%           ModeLT{Case,1}=[];
%           ModeMinuteMetroid{Case,1}(size(ModeLT{Case,1},2)+1:size(Matrix{Case,1},2)) = ModeMetroid(Case)
%   
%    else
%    for j = 1:floor(size(Matrix{Case,1},2)/200)
%    
%    ModeLT{Case,1}((200*j-199):(200*j)) = mode(round(Matrix{Case,1}(3,(200*j-199):(200*j))/interval)*interval);
%    
%    end
%    
%   
%    ModeMinuteMetroid{Case,1}(1:size(ModeLT{Case,1},2)) = ModeLT{Case,1};
%    ModeMinuteMetroid{Case,1}(size(ModeLT{Case,1},2)+1:size(Matrix{Case,1},2)) = ModeLT{Case,1}(1,end);
%    
%    end
%    MeanModeMetroid(Case) = mean(ModeMinuteMetroid{Case,1}(1,:));
%    
%    %plotter Metroidet og mode minuteMetroid
%    
%    subplot(round(AntalDJs/2),2,Case)
%    plot(Matrix{Case,1}(1,:),Matrix{Case,1}(3,:),...
%        Matrix{Case,1}(1,:),ModeMinuteMetroid{Case,1}(1,:),'linewidth',2)
%    legend({'Metroid','Mode(Metroid each minute)'},'FontSize',8,'FontWeight','bold')
%    title(DJ{Case,1})
%    set(gcf,'name',feature)
%     end
% end
% 
% 
% 
% 
% 
% 
% 
% 
%  % prøver at udregne noget med synkoperinger. Idé: At Metroidmålinger uden
%  % for det rigtige Metroid kan være indikator af synkoperinger. 
%  % Går logaritmisk til værks. Fx er Metroid 120 og 240 er i denne udregning det samme.
%  % mens at Metroid 180 målt ved mode(Metroid) 120 kan være udtryk noget 3 mod
%  % 2. 
%  
%  
%  
% for Case = 1:AntalDJs
% 
%     if Matrix{Case,1}==[0]
%         localskaevhed{Case,1}=0;
%         MetroidSynco0(Case) = 0;
%   MetroidSynco1(Case) = 0;
%   MetroidSynco2(Case) = 0;
%   MetroidSynco3(Case) = 0;
%     else
%         
% sk{Case,1} = log2(Matrix{Case,1}(3,:))-(log2(ModeMinuteMetroid{Case,1}(1,:)));
% 
% % definerer skævhed som er et mål for hvor meget hver tidsenhed afviger fra
% % mode*(1,2,3,4)
% skaevhed{Case,1} = sk{Case,1}-floor(sk{Case,1});
% 
% %inddeler i intervaller fra 1-4, hvor mode +/- 12,5%. Kasser angiver logaritmen. 
% %Pointen er hvis noget afviger 40% fra lokal mode, så kommer det i kasse 2. 
% kasser = [0.1699,0.4594,0.7004,0.9069];
% laengde = length(skaevhed{Case,1});
% 
% for i = 1:laengde
%     
% localskaevhed{Case,1}(i,:)= mod((skaevhed{Case,1} (i) > kasser(1))+(skaevhed{Case,1} (i) > kasser(2))+(skaevhed{Case,1} (i) > kasser(3))+(skaevhed{Case,1} (i) > kasser(4)),4);
% 
% end
% 
% subplot(round(AntalDJs/2),2,Case)
%    hist(localskaevhed{Case,1},[0:4])
%    title(DJ{Case,1})
%    set(gcf,'name','Deviation from mode')
%   
%   % MetroidSynco(Case) = std(localskaevhed{Case,1});
%   MetroidSynco0(Case) = sum(localskaevhed{Case,1}==0) / size(localskaevhed{Case,1},1);
%   MetroidSynco1(Case) = sum(localskaevhed{Case,1}==1) / size(localskaevhed{Case,1},1);
%   MetroidSynco2(Case) = sum(localskaevhed{Case,1}==2) / size(localskaevhed{Case,1},1);
%   MetroidSynco3(Case) = sum(localskaevhed{Case,1}==3) / size(localskaevhed{Case,1},1);
%   
% 
%     end 
% end
% 
%   MetroidData2 = [MetroidData2;MetroidData];
% end
% 
 end
% MetroidVariables = {'MeanMetroid','MedianMetroid','StdMetroid','ModeMetroid','MeanModeMetroid','MetroidSynco0','MetroidSynco1','MetroidSynco2','MetroidSynco3'}
% MetroidData = [MeanMetroid',MedianMetroid',StdMetroid',ModeMetroid',MeanModeMetroid',MetroidSynco0',MetroidSynco1',MetroidSynco2',MetroidSynco3'];
% 
%%

