Advertisement
Guest User

Calc_SEM

a guest
Oct 19th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.37 KB | None | 0 0
  1. function [p1,p2,m1,sig1,m2,sig2,history] = calc_SEM(Y,p10,p20,m10,sig10,m20,sig20,nb_iterSEM,classe)
  2. %CALC_SEM Summary of this function goes here
  3. %   Detailed explanation goes here
  4.  
  5. p1 = p10;
  6. p2 = p20;
  7.  
  8. m1 = m10;
  9. m2 = m20;
  10.  
  11. sig1 = sig10;
  12. sig2 = sig20;
  13.  
  14. avg_last = [p1 p2 m1 sig1 m2 sig2];
  15.  
  16. parameterv = [];
  17.  
  18. % delta = inf;
  19. diff_avg = inf;
  20.  
  21. % delta_history = [];
  22. history = [];
  23.  
  24. i = 1;
  25.  
  26. while diff_avg > 0.00001
  27.    
  28.     Ppost = calc_probapost_Gauss(Y,p1,p2,m1,sig1,m2,sig2);
  29.    
  30.     [X_post] = tirage_apost(Ppost,classe(1),classe(2));
  31.    
  32.     [ p1_new, p2_new, m1_new, sig1_new, m2_new, sig2_new ] = est_empiriques(X_post, Y, classe);
  33.    
  34. %     delta_parametres = [abs(p1-p1_new) abs(p2-p2_new) abs(m1_new-m1) abs(m2_new-m2) abs(sig1_new-sig1) abs(sig2_new-sig2)];
  35. %     delta = max(delta_parametres);
  36. %    
  37. %     delta_history(i,:) = delta_parametres;
  38. %     delta_history(i,:) = delta_history(i,:)./delta_history(1,:);
  39.  
  40.     parameterv(i,:) = [p1_new p2_new m1_new sig1_new m2_new sig2_new];
  41.    
  42.     [m,~] = size(parameterv);
  43.     s = max(1,m-20);
  44.     avg = mean(parameterv(s:end,:),1);
  45.     diff_avg = norm(avg_last - avg);
  46.    
  47. %     disp(avg);
  48.    
  49.     p1 = avg(1);
  50.     p2 = avg(2);
  51.    
  52.     m1 = avg(3);
  53.     m2 = avg(5);
  54.    
  55.     sig1 = avg(4);
  56.     sig2 = avg(6);
  57.    
  58.     i = i+1;
  59.  
  60.     avg_last = avg;
  61.     history(i,:) = avg;
  62.    
  63. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement