%% Testování detekčních algoritmů pro 3 kinematické veličiny Hip Flexion/Extension, Knee Flexion/Extension,Ankle Dorsi/Plantar
% testování na původních datech - načtení matice DMO_all_trial.mat
%  - 3 detekční metody
% testování na zašuměných datech - načtení matice DMO_noise.mat
% - 3 detekční metody + EMD (4.) - odkomentovat

load('DMO_all_trial.mat')  % původní signály
% load('DMO_noise.mat');    % zašuměné signály, vytvořeno pomocí skriptu add_noise.m

%% uložení detekovaných extrémů
extremy_Left=cell(4,5);extremy_Right=cell(4,5);
extremy_Left{1,2}=('1.detekční metoda');extremy_Left{1,3}=('2.detekční metoda');extremy_Left{1,4}=('3.detekční metoda');extremy_Left{1,5}=('4.detekční metoda');
extremy_Right{1,2}=('1.detekční metoda');extremy_Right{1,3}=('2.detekční metoda');extremy_Right{1,4}=('3.detekční metoda');extremy_Right{1,5}=('4.detekční metoda');
extremy_Left{2,1}=('HIP - MIN');extremy_Left{3,1}=('KNEE - MIN');extremy_Left{4,1}=('ANKLE - MAX');
extremy_Right{2,1}=('HIP - MIN');extremy_Right{3,1}=('KNEE - MIN');extremy_Right{4,1}=('ANKLE - MAX');
%%
var=[1 4 7];       % 3 veličiny - 1...Hip Flexion/Extension, 2...Knee Flexion/Extension, 3...Ankle Dorsi/Plantar
for i=1:length(var);  
    
    % testování původních dat
    pom_L=DMO_all_trial{var(i),1};
    pom_R=DMO_all_trial{var(i),2};
    % testování zašuměných dat
%    pom_L=DMO_noise{var(i),1};
%    pom_R=DMO_noise{var(i),2}; 

    %% 1. DETEKČNÍ METODA
    if var(i)==1 || var(i)==4                           % hledám minimum
     [a_L, a_L_ind]=min(pom_L,[],2);
     [a_R, a_R_ind]=min(pom_R,[],2);
    else                                                % hledám maximum
     [a_L, a_L_ind]=max(pom_L,[],2);
     [a_R, a_R_ind]=max(pom_R,[],2);
    end
     extremy_Left{i+1,2}(1:length(a_L),1)=a_L;extremy_Left{i+1,2}(1:length(a_L_ind),2)=a_L_ind;
     extremy_Right{i+1,2}(1:length(a_R),1)=a_R;extremy_Right{i+1,2}(1:length(a_R_ind),2)=a_R_ind;
    
    %% 2. DETEKČNÍ METODA 
    % magnitude-based detection
    if var(i)==1 || var(i)==4                                    % hledám minimum
        [b_L,b_L_ind,b_R,b_R_ind]=magnitude(pom_L,pom_R,1);      % volání funkce magnitude
    else                                                         % hledám maximum
        [b_L,b_L_ind,b_R,b_R_ind]=magnitude(pom_L,pom_R,2);      % volání funkce magnitude
    end
    extremy_Left{i+1,3}(1:length(b_L),1)=b_L; extremy_Left{i+1,3}(1:length(b_L_ind),2)=b_L_ind;
    extremy_Right{i+1,3}(1:length(b_R),1)=b_R;extremy_Right{i+1,3}(1:length(b_R_ind),2)=b_R_ind;
    
    %% 3. DETEKČNÍ METODA
    if var(i)==1 || var(i)==4                                     % hledám minimum
        [c_L,c_L_ind,c_R,c_R_ind]=segments(pom_L,pom_R,1);        % volání funkce segments
    else                                                          % hledám maximum
       [c_L,c_L_ind,c_R,c_R_ind]=segments(pom_L,pom_R,2);         % volání funkce segments
    end
    extremy_Left{i+1,4}(1:length(c_L),1)=c_L;extremy_Left{i+1,4}(1:length(c_L_ind),2)=c_L_ind;
    extremy_Right{i+1,4}(1:length(c_R),1)=c_R;extremy_Right{i+1,4}(1:length(c_R_ind),2)=c_R_ind;
    
    %% 4. METODA -EMD
%     for j=1:size(pom_L,1)
%             x_L=pom_L(j,:);
%             x_R=pom_R(j,:);
%             
%             [imf_L,imf_R]=emd(x_L,x_R);           % volání funkce emd
%             
%              pom_L(j,:)=imf_L;
%              pom_R(j,:)=imf_R;
%              
%     end
% 
%     if var(i)==1 || var(i)==4                                     % hledám minimum
%      [d_L, d_L_ind]=min(pom_L,[],2);
%      [d_R, d_R_ind]=min(pom_R,[],2);
%     else                                                          % hledám maximum
%      [d_L, d_L_ind]=max(pom_L,[],2);
%      [d_R, d_R_ind]=max(pom_R,[],2);
%     end
%      extremy_Left{i+1,5}(1:length(d_L),1)=d_L;extremy_Left{i+1,5}(1:length(d_L_ind),2)=d_L_ind;
%      extremy_Right{i+1,5}(1:length(d_R),1)=d_R;extremy_Right{i+1,5}(1:length(d_R_ind),2)=d_R_ind;
 end
   

