Bonjour,
Je cherche à trier mes structures (je crois que ce sont des structures de tableaux plus précisément) par rapport au paramètre y. A savoir que cellule.x et cellule.y ont le même nombre d'élèmentvoici mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 cellule{k} ans = 1x19 struct array with fields: x yCe que je faisais avant mais avec des matrices:
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 for k=1:N % traitement images .... [etiquette{k},NbObjets{k}] = bwlabel(fill{k},8); rego{k} = regionprops(L{k},'All'); end x=cell(1,N); y=cell(1,N); distance={}; for k=1:N for i=1:NbObjets{k} % création de ma structure cellule{k}(i).x = rego{k}(i).Centroid(1); cellule{k}(i).y = rego{k}(i).Centroid(2); end % récupération de données afin de faire des calculs de distance x{k} = [cellule{k}.x]; xs{k} = diff(x{k},[],2); xss{k} = xs{k}'; y{k} = [cellule{k}.y]; ys{k} = diff(y{k},[],2); yss{k} = ys{k}'; end % calcul des distances entre objets balayage en x for k=1:N distance{k} = zeros(NbObjets{k},1); for i=1:NbObjets{k} distance{k}(i)=sqrt(xss{k}(i)^2+yss{k}(i)^2); end end for k=1:N for i=1:NbObjets{k} [p,idx]=sort(cellule{k}.y) cellule{k}.x=cellule{k}(idx).x cellule{k}.y=cellule{k}(idx).y end end
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 affiche=zeros(NbObjets{10},4); affiche(:,1)=1:NbObjets{10}; affiche(:,2)=1; % création d'une matrice for k=1:N regc=regionprops(L{k},'Centroid'); affiche(:,2*k+1:2*k+2)=cat(1, regc.Centroid) end x=affiche(:,3:2:end); y=affiche(:,4:2:end);yx=[]; distancey=[]; % distance entre objets (soustraction en lignes) balayage en y croissant for i=3:2:2*N+2 xy=affiche(:,i:i+1); yx=[yx sortrows(xy,2)]; % je trie ma matrice par rapport au y du 1er objet end x1=yx(:,1:2:end); y1=yx(:,2:2:end); xs3=diff(x1',[],2); ys3=diff(y1',[],2); xs4=xs3'; ys4=ys3'; % je récupère la différence en x et en y for k=1:N for i=1:NbObjets{1} distancey(i,k)=sqrt(xs4(i,k)^2+ys4(i,k)^2); end end
J'avais fait des recherches sur le forum et avait trouvé ce lien intéressant :
http://www.developpez.net/forums/sho...ight=structure
mais je n'y arrive pas
Merci d'avance de votre aide si précieuse en ce moment!
Partager