https://github.com/wbounliphone/Ustatistics_Approach_For_SD
Raw File
Tip revision: f4c6735faacbdba0d2175dc2e10231a2e2d63e49 authored by wbounliphone on 31 March 2016, 13:51:19 UTC
Update README.md
Tip revision: f4c6735
indice_for_all_cases.m
function [ind_c1,ind_c2,ind_c3,ind_c4,ind_c5,ind_c6,ind_c7]=indice_for_all_cases(ind_ijkl)
% Author: Wacha Bounliphone - wacha.bounliphone@centralesupelec.fr
% Copyright (c) 2016
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or
% (at your option) any later version.
% 
% If you use this software in your research, please cite:%
% Bounliphone, W. &  Blaschko, M.B. (2016).  
% A U-statistic Approach to Hypothesis Testing for Structure Discovery in 
% Undirected Graphical Models
%
% -------------------------------------------------------------------
% [ind_c1,ind_c2,ind_c3,ind_c4,ind_c5,ind_c6,ind_c7] are vectors that
% provide the indices for the seven cases
% -------------------------------------------------------------------


%%%%% CASE 1:  i \ne j,k,l$; $j \ne k,l$; $k \ne l$
ind_c1 = find( (ind_ijkl(:,1) ~= ind_ijkl(:,2)) ...
              &(ind_ijkl(:,1) ~= ind_ijkl(:,3)) ...
              &(ind_ijkl(:,1) ~= ind_ijkl(:,4)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,3)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );
                
%%%%% CASE 2:  $i=j$; $j \ne k,l$; $k = l$
ind_c2 = find( (ind_ijkl(:,1) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,3)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) == ind_ijkl(:,4)) );
                
                
%%%%% CASE 3: i=j$; $i \ne k,l $; $j \ne k,l$; $k \ne l$
% ou par sym; k==l; $k \ne i,j $; $l \ne i,j$; $i \ne j$
ind_c3_1 = find( (ind_ijkl(:,1) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,3)) ...
              &(ind_ijkl(:,2) ~= ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );
          
ind_c3_2 = find( (ind_ijkl(:,3) == ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,1)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,2)) ...
              &(ind_ijkl(:,1) ~= ind_ijkl(:,2)) );
          
ind_c3=[ind_c3_1;ind_c3_2];


%%%%% CASE 4: NOK $i=k$; $j \ne i,k,l$; $k \ne l$
ind_c4_1 = find( (ind_ijkl(:,1) == ind_ijkl(:,3)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,1)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,3)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,4)) ...
    &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );
ind_c4_2 = find( (ind_ijkl(:,1) == ind_ijkl(:,4)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,1)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,3)) ...
    &(ind_ijkl(:,2) ~= ind_ijkl(:,4)) ...
    &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );
ind_c4_3 = find( (ind_ijkl(:,2) == ind_ijkl(:,3)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,2)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,3)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,4)) ...
    &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );
ind_c4_4 = find( (ind_ijkl(:,2) == ind_ijkl(:,4)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,2)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,3)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,4)) ...
    &(ind_ijkl(:,3) ~= ind_ijkl(:,4)) );

ind_c4=[ind_c4_1;ind_c4_2;ind_c4_3;ind_c4_4];


%%%%% CASE 5  $i=k$; $i \ne j$; $j=l$
ind_c5_1 = find( (ind_ijkl(:,1) == ind_ijkl(:,3)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,2)) ...
    &(ind_ijkl(:,2) == ind_ijkl(:,4)) );
ind_c5_2 = find( (ind_ijkl(:,1) == ind_ijkl(:,4)) ...
    &(ind_ijkl(:,1) ~= ind_ijkl(:,2)) ...
    &(ind_ijkl(:,2) == ind_ijkl(:,3)) );
ind_c5 = [ind_c5_1;ind_c5_2];


%%%%% CASE 6: $i=j=k$; $i \ne l$
ind_c6_1 = find( (ind_ijkl(:,1) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,1) == ind_ijkl(:,3)) ...
              &(ind_ijkl(:,1) ~= ind_ijkl(:,4)) );
ind_c6_2 = find( (ind_ijkl(:,1) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,1) == ind_ijkl(:,4)) ...
              &(ind_ijkl(:,1) ~= ind_ijkl(:,3)) );          
ind_c6_3 = find( (ind_ijkl(:,3) == ind_ijkl(:,1)) ...
              &(ind_ijkl(:,3) == ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,2)) );
ind_c6_4 = find( (ind_ijkl(:,3) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,3) == ind_ijkl(:,4)) ...
              &(ind_ijkl(:,3) ~= ind_ijkl(:,1)) );
ind_c6=[ind_c6_1;ind_c6_2;ind_c6_3;ind_c6_4];
          
%%%%% CASE 7 :  $i=j,k,l$
ind_c7 = find( (ind_ijkl(:,1) == ind_ijkl(:,2)) ...
              &(ind_ijkl(:,1) == ind_ijkl(:,3)) ...
              &(ind_ijkl(:,1) == ind_ijkl(:,4)) );
          
              

%%% need to verify that we have covered all terms
% all_indices = [ind_c1;ind_c2;ind_c3;ind_c4;ind_c5;ind_c6;ind_c7];
% all_indices = sort(all_indices);
% 
% [r,~] = hist(all_indices,unique(all_indices));
% 
% disp(' %%% vérification: if 1 then correct! %%%' )
% sum(r) == length(all_indices)






end
back to top