Advertisement
Guest User

bayes3.m

a guest
Apr 27th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.77 KB | None | 0 0
  1. %% Initialisation
  2.  
  3. % Limité à l'ordre 4 pour des problèmes de mémoires
  4.  
  5. close all
  6. clc
  7.  
  8. tic
  9.  
  10. cheminLecture = 'bayes.txt';
  11. nb = 8;
  12. fichierLecture = fopen(cheminLecture, 'r');
  13.  
  14. donnee = [];
  15. ligneN = zeros(1,nb);
  16. facteurs = [1 1 1 0.5 0.5 0.4 1/30 1]; % permet de réduire la mémoire utilisée et donc d'augmenter l'ordre
  17.  
  18. while(~feof(fichierLecture))
  19.     ligneS = split(fgets(fichierLecture));
  20.     for i=1:nb
  21.         ligneN(i) = uint16(str2num(ligneS{i})*facteurs(i));
  22.     end
  23.     donnee = [donnee; ligneN];
  24. end
  25.  
  26. fclose(fichierLecture);
  27.  
  28. toc
  29.  
  30. %% Vérifications de l'intégrité des données
  31. Minima = min(donnee);
  32. Maxima = max(donnee);
  33. dims = Maxima-Minima+1;
  34.  
  35. for i = 1:nb
  36.     figure
  37.     plot(donnee(:,i))
  38.     title(num2str(i))
  39. end
  40.  
  41. % on seuil à 100 pour les rafales de vent afin de réduire la dimension
  42.  
  43. %% Création de la matrice de densité de probabilité
  44.  
  45. tic
  46. close all
  47. D = {};
  48.  
  49. for i = 1:nb
  50.     D{end+1} = zeros(dims(i),dims(i),dims(i),dims(i),dims(i));
  51. end
  52.  
  53. for i = 5:size(donnee,1)
  54.     for n = 1:nb
  55.         D{n}(donnee(i-4,n)-Minima(n)+1,donnee(i-3,n)-Minima(n)+1,donnee(i-2,n)-Minima(n)+1,donnee(i-1,n)-Minima(n)+1,(donnee(i,n)-Minima(n)+1):dims(n)) = D{n}(donnee(i-4,n)-Minima(n)+1,donnee(i-3,n)-Minima(n)+1,donnee(i-2,n)-Minima(n)+1,donnee(i-1,n)-Minima(n)+1,(donnee(i,n)-Minima(n)+1):dims(n))+1;
  56.     end
  57. end
  58.  
  59. for n = 1:nb
  60.     for i =1:dims(n)
  61.         for j =1:dims(n)
  62.             for k =1:dims(n)
  63.                 for p =1:dims(n)
  64.                     if(D{n}(i,j,k,p,dims(n))~=0)
  65.                         D{n}(i,j,k,p,:) = D{n}(i,j,k,p,:)/D{n}(i,j,k,p,dims(n));
  66.                     end
  67.                 end
  68.             end
  69.         end
  70.     end
  71. end
  72.  
  73. toc
  74.  
  75. %% Test
  76.  
  77. tic
  78.  
  79. nbDonnee = 20;
  80. nbTest = 100000;
  81. test = uint16([[4 12 17 1020 11 22 170 0];[4 15 18 1018 14 22 110 0];[4 18 15 1018 14 29 90 0];[4 21 11 1019 14 22 60 0]].*facteurs);
  82.  
  83.  
  84. resultatN = zeros(1,nb);
  85. resultat = zeros(nbTest, nbDonnee+4, nb);
  86. for j = 1:nbTest
  87.     resultat(j,1:4,:) = test;
  88.     for t = 4:nbDonnee+3
  89.         randoum = rand(nb,1);
  90.         for i =1:nb
  91.             resultatN(i) = Minima(i)+sum(D{i}(resultat(j,t-3,i)-Minima(i)+1,resultat(j,t-2,i)-Minima(i)+1,resultat(j,t-1,i)-Minima(i)+1,resultat(j,t,i)-Minima(i)+1,:)<randoum(i));
  92.         end
  93.         resultat(j,t+1,:) = resultatN;
  94.     end
  95. end
  96.  
  97.  
  98. for t = 1:nbDonnee+4
  99.     for j = 1:nbTest
  100.         for i =1:nb
  101.             resultat(j,t,i) = resultat(j,t,i)/facteurs(i);
  102.         end
  103.     end
  104. end
  105.  
  106. for i = 3:nb
  107. figure
  108. histogram(resultat(:,end,i))
  109. end
  110.  
  111. resultatAttendu = [[4 3 11 1027 11 14 10 0];[4 6 11 1027 14 18 20 0];[4 9 19 1027 7 18 20 0 ]];
  112.  
  113. resultat3d = mean(resultat(:,end-2:end,:));
  114. distan = norm(resultatAttendu(:,[1,2,3,4,5,6,8])-reshape(resultat3d(1,:,[1,2,3,4,5,6,8]),3,7))
  115.  
  116. toc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement