Trier avec sort ou autre dans un tableau de structure
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èment
Code:
1 2 3 4
| cellule{k}
ans = 1x19 struct array with fields:
x
y |
voici mon programme:
Code:
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 |
Ce que je faisais avant mais avec des matrices:
Code:
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!