
tic


numeroiterazioni = 100;  %diverso da 1 se si vuole ripetere piu' volte il test
                       ...ma e' da controllare su quali dati lavora...

%% fase precedente


 numnodi=length(Stati);

% illustrativo3    


%% definizioni preliminari

%chiamo P la matrice con le probabilita' di transizione (perche' A esiste
%gia'). viene calcolata in CreaCatenaMarkovVisibile

%la rendo con nessun elemento nullo (ma funziona ugualmente)
epsilon = 1e-6;
P = (P + epsilon*ones(length(P),length(P))) / (1+epsilon*length(P));

%chiamo C la matrice delle probabilita' delle osservazioni (perche' B
%esiste gia'). e' definita in GrafoMCsenzamemoria.m e inizialmente e'
%l'identita'. viene modificata nella funzione che fa lo split.

%chiamo pigreco la distribuzione iniziale di probabilita' di essere nei
%vari stati. la inizializzo con lo stato 1.
pigreco = zeros(1,numnodi);
pigreco(1) = 1;

%indici per C (per ogni osservazione da qual é la relativa osservazione)
row = zeros(campioni,1);

for t=1:(campioni)
  for j=1:length(Stati)
    app=Stati(j);
      if getNodo(app)==IN(t,:)
          row(t)=j;
          break
      end
  end
end

 
%copia di backup delle matrici iniziali perche' poi sovrascritte
PP = P;  
CC = C;


%%

P_bar = zeros(numnodi,numnodi);
C_bar = zeros(numoss,numnodi);


for vvv=1:numeroiterazioni
    
    baumscaled;
    indice_convergenza(vvv)=max(max((abs(P-P_bar))));
    indice_convergenza(vvv)
     
    if indice_convergenza(vvv) < 10^-6
    break
    
    end 
    P = P_bar;
    C = C_bar;
    pigreco=pigreco_bar;
    
end

diff = PP - P;
figure
surf((diff));  %fa il plot degli errori


toc



