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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
cellule{k}
ans = 1x19 struct array with fields:
    x
    y
voici mon programme:
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
Ce 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
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!