Bonjour Tous le monde,

Le but de cette partie de mon travail est de détecter le nombre et la nature des défauts(1,2,3,4,5) par zone(1,2,3) et de faire allumer une led(représenté par un bouton frame) en vert si certaines conditions sont respectées, et en rouge si elles ne sont pas respectées:

Les conditions de détections et de l'allumage de la led sont les suivantes:

Les Zones 1,2,3 sont récupérées du vecteur VecteurZone
La nature des défauts est récupérée du vecteur VecteurClasse

Zone 1:
seules les défauts '1' sont accéptés

Zone 2:
un Max de 4 défauts de nature '1' ou '2' sont accéptés et un seul défaut de nature '3'

Zone 3:
5 défauts de nature '3' ou '4' sont accéptés
Les défauts '1' et '2' sont non considérés

Le défaut 5 n'est accépté sur aucune des trois zones
Pas plus que 5 défauts au total sur les trois zones


Voici le code que j'ai essayé mais il marche pas super bien et ne respecte pas toutes les condition, seule quelques une,

Je ne sais pas si c'est la meilleure méthode de faire..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
 
%Récuperation de nombre de défauts total sur tout l'echantillon
        for i=1:length(VecteurClasse)
            if (VecteurClasse(i,:)==1 )
                NbDefautsB2=NbDefautsB2+1;
            elseif (VecteurClasse(i,:)==2)
                NbDefautsB3=NbDefautsB3+1;
            elseif (VecteurClasse(i,:)==3)
                NbDefautsC1=NbDefautsC1+1;
            elseif (VecteurClasse(i,:)==4)
                NbDefautsC2=(NbDefautsC2+1);
            elseif (VecteurClasse(i,:)==5)
                NbDefautsC2sup=NbDefautsC2sup+1;
            end 
        end
 
 
Total_Defauts=NbDefautsB2+NbDefautsB3+NbDefautsC1+NbDefautsC2+NbDefautsC2sup;
 
%si classification est réalisée
if (VecteurClasse(:,:)~=0)   
 
%parcours du vecteur des classes    
for j=1:length(VecteurClasse)  
 
%tests des conditions sur la zone 1
          if ((VecteurClasse(j,:) ==  1) || (strcmp(VecteurZone(j,:),'1')) || (Total_Defauts <= 5))
                        set(handles.validiteverre,'BackGroundColor','green');
%          
%                     elseif ((VecteurClasse(j,:) ==  1) || (strcmp(VecteurZone(j,:),'1')) || (Total_Defauts>5))
%                         set(handles.validiteverre,'BackGroundColor','red');
 
                     elseif ((VecteurClasse(j,:) ==  2) || (strcmp(VecteurZone(j,:),'1')))
                             set(handles.validiteverre,'BackGroundColor','red');
 
                      elseif ((VecteurClasse(j,:) ==  3) || (strcmp(VecteurZone(j,:),'1')))
                                    set(handles.validiteverre,'BackGroundColor','red');
 
                      elseif ((VecteurClasse(j,:) ==  4) || (strcmp(VecteurZone(j,:),'1')))
                                    set(handles.validiteverre,'BackGroundColor','red');
 
                      elseif ((VecteurClasse(j,:) ==  5) || (strcmp(VecteurZone(j,:),'1')))
                                    set(handles.validiteverre,'BackGroundColor','red');
 
                      elseif ((strcmp(VecteurZone(j,:),'1')||(NbDefautsB2) > 5))   
                                    set(handles.validiteverre,'BackGroundColor','red');
 
           end
 
 
%      test des défauts dans la zone 2
 
                    if ((VecteurClasse(j,:) ==  4) || (strcmp(VecteurZone(j,:),'2')))% || ( NbDefautsC1 > 1))
                                      set(handles.validiteverre,'BackGroundColor','red');
 
                        elseif ((VecteurClasse(j,:) == 1 )||(strcmp(VecteurZone(j,:),'2')) || ((NbDefautsB2 + NbDefautsB3)==4)|| ((NbDefautsC1 + NbDefautsC2 + NbDefautsC2sup) ==0))
                                        set(handles.validiteverre,'BackGroundColor','green');
 
                        elseif ( (VecteurClasse(j,:) == 2 )||(strcmp(VecteurZone(j,:),'2')) ||((NbDefautsB2 + NbDefautsB3)==4)|| ((NbDefautsC1 + NbDefautsC2 + NbDefautsC2sup) ==0))
                                        set(handles.validiteverre,'BackGroundColor','green');
 
                          elseif ( (VecteurClasse(j,:) == 3 )||(strcmp(VecteurZone(j,:),'2')) ||((NbDefautsB2 + NbDefautsB3)==4)|| (( NbDefautsC2 + NbDefautsC2sup) ==0)|| (NbDefautsC1>1))
                                        set(handles.validiteverre,'BackGroundColor','red');
 
                        elseif ((strcmp(VecteurZone(j,:),'2')) || ((NbDefautsB2 + NbDefautsB3) > 4) || ((NbDefautsC1 + NbDefautsC2 + NbDefautsC2sup) ==0))
                                        set(handles.validiteverre,'BackGroundColor','red');
 
                        elseif ((strcmp(VecteurZone(j,:),'2')) || ((NbDefautsB2 + NbDefautsB3) == 4) || (NbDefautsC1 == 1))
                                        set(handles.validiteverre,'BackGroundColor','green');
 
                        elseif ((strcmp(VecteurZone(j,:),'2')) || (NbDefautsB2 + NbDefautsB3 + NbDefautsC1 ) > 5)   
                                        set(handles.validiteverre,'BackGroundColor','red');
                    end              
%      test des défauts dans la zone 3
 
                        if   (( (strcmp(VecteurZone(j,:),'3')) || ( NbDefautsC1 + NbDefautsC2 ) == 5))
                                        set(handles.validiteverre,'BackGroundColor','green');
 
                        elseif   (( (strcmp(VecteurZone(j,:),'3')) || ( NbDefautsC1 + NbDefautsC2 ) > 5))
                                        set(handles.validiteverre,'BackGroundColor','red');
 
                        elseif   (( (strcmp(VecteurZone(j,:),'3')) || ((VecteurClasse(j,:) == 1 ) || (VecteurClasse(j,:) == 2 ) || ( NbDefautsC1 + NbDefautsC2 ) <=5 )))
                                        set(handles.validiteverre,'BackGroundColor','green');    
 
                        elseif   (( (strcmp(VecteurZone(j,:),'3')) || ((VecteurClasse(j,:) == 1 ) || (VecteurClasse(j,:) == 2 ) || ( NbDefautsC1 + NbDefautsC2 ) > 5 )))
                                        set(handles.validiteverre,'BackGroundColor','red');    
 
                        end
%     test sur le defaut >C2
  if (strcmp(VecteurClasse(j,:), '5'))
        set(handles.validiteverre,'BackGroundColor','red');
  end 
 
end