Bonjour à tous,
Je dispose d'un tableau dans Matlab dans lequel il y a des valeurs égales à 0 et d'autres égales à 1. Mon objectif est de récupérer le nombre de cases qui constituent le périmètre séparant les 1 et les 0... Le problème étant que des 0 peuvent se trouver au milieu de mes 1 et que je ne veux pas les prendre en compte dans mon périmètre (je veux seulement le périmètre extérieur). Mon algorithme pour l'instant est:
- Je compte le nombre de cases pleines
- Je soustraits les cases pleines qui sont entourées de cases pleines
- Je soustraits les cases vides entourées de cases pleines... Le problème étant que les cases vides peuvent être collées entre elles. Pour une case ou deux, ça va mais il peut y avoir plusieurs dizaines de cases vides et donc des centaines de configurations...
Par exemple, voici à quoi ressemble mon code pour le moment:
Mon nombre de if croit de façon exponentielle après ça...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for l=2:size(Z,1)-1 for k=2:size(Z,2)-2 %Pour deux cases côte à cote à l'horizontal %Si la case de base est vide et que celle de la colonne d'après est vide et que toutes celles les entourant sont pleines, alors j'itère. if(Z(l,k)== 0 && Z(l,k+1)==0 && Z(l+1,k)~=0 && Z(l-1,k)~=0 && Z(l,k-1)~=0 && Z(l+1,k+1)~= 0 && Z(l-1,k+1)~= 0 && Z(l,k+2)~= 0) ite3=ite3+1; end end end
Est-ce que quelqu'un aurait un moyen plus simple?
Partager