
global Stati;
% t=[0 0 0]
%IN=MatriceVisione(t,A,B);
tic
     


tempo=0;
Stati=[];
attuale1=zeros(1,length(t));
att=nodo(attuale1,[],1);
Stati=[Stati att];
attuale=1;
trovato=false;
precedente=[];
for i=1:length(IN)
     
   if sum(abs(getNodo(Stati(attuale))-IN(i,:)))~=0           % controlla se c'è stato un cambiamento di stato
    
      %Stato cambiato
     for j=1:length(Stati)      % cerca se lo stato è già stato creato
       app=Stati(j);
      
%         qqq= getNodo(app)
%            www=IN(i,:)
           
       if getNodo(app)==IN(i,:)   % è stato creato ==> aggiorna
        
          Stati(j)=addPrecedente(app,attuale); 
         Stati(attuale)=addSuccessivo(Stati(attuale),j,precedente,tempo);
         precedente=attuale;
         attuale=j;
%          app=addPrecedente(app,attuale); 
%          Stati(length(Stati))=addSuccessivo(attuale,app,precedente,tempo);
         tempo=0;
         trovato=true;
         %attuale=app;
           break
       end
       
         
       
     end
     
     if trovato==false
%         eee= IN(i,:)
         att=nodo(IN(i,:),attuale,length(Stati)+1);  
         Stati= [Stati att];
         Stati(attuale)=addSuccessivo(Stati(attuale),length(Stati),precedente,tempo);
         tempo=0;
         precedente=attuale;
         attuale=length(Stati);
         trovato=false;
     end    
    
  else  tempo=tempo+1;   % indice per tenere in memoria il tempo in cui si permane in uno stato
  end
   trovato=false; 
end

if tempo~=0
   Stati(attuale)= addSuccessivo(Stati(attuale),[],precedente,tempo);
end  


for i=1:length(Stati)
    Stati(i)=riordinaInout(Stati(i));
end

C=eye(length(Stati));
P=CreateMatrixTransition(Stati,1);

toc




