IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Création d'un vecteur à partir d'une structure


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Points : 63
    Points
    63
    Par défaut Création d'un vecteur à partir d'une structure
    Bonjour

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    se=strel('disk',tail_disq);     x=[];
    for k=1:N
        % .... traitement d'images ...
        [etiquette{k},NbObjets{k}]=bwlabel(fill{k},8);
        b{k}=bwboundaries(fill{k});    L{k}=bwlabel(fill{k}); 
        rego{k}=regionprops(L{k},'All'); 
        for i=1:NbObjets{k}
            cellule{k}(i).x=rego{k}(i).Centroid(1);   
         x=[x cat(1,cellule{k}(i).x)];
        end
    end
    Je souhaiterais obtenir le vecteur x qui correspondrait au vecteur des cellule{k}(i) pour un k donné. Avec la ligne en gras!
    Pour l'instant, j'obtiens
    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
     
       x =
     
      Columns 1 through 9 
     
       50.2185   60.0152  164.6580  192.7878  236.9781  259.4777  348.9777  323.8361  395.6808
     
      Columns 10 through 18 
     
      433.5077  439.9491  460.8652  485.1210  495.0915  534.3955  544.9678  542.1325  562.3663
     
      Columns 19 through 27 
     
      565.5901  617.0956   49.9468   58.5356  164.1240  194.4185  237.7363  258.1201  326.7857
     
      Columns 28 through 36 
     
      325.2991  358.6368  395.3091  434.0122  438.7123  460.8733  484.5668  495.7692  543.6437
     
      Columns 37 through 45 
     
      544.4197  541.9020  567.2198  617.1703
    qui correspond à toutes mes valeurs de cellule{k}(i).x mises les unes à la suite des autres! (pour l'exemple, j'ai 2 images)

    Pourriez-vous me dire quelle est mon erreur et comment y remédier

    Merci d'avance,
    Cordialement

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    le nombre d'objets par image n'est pas le même donc tu ne peux pas utiliser une matrice.

    un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    x = {}; % tableau de cellules
     
    for k = 1:N
       % .... 
       for i = 1:NbObjets{k}
          % .... 
          x{k} = [x{k} cellule{k}(i).x];
          % x{k} contient les x des centres des objets dans l'image k
          % ....
       end
    end
    ne te convient pas ?
    ++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Matlab renvoie un message d'erreur
    Index exceeds matrix dimensions.
    J'essaye en fait d'obtenir un vecteur x par image toujours mais je ne trouve pas comment faire même en essayant de modifier ce que tu m'as donné ....

    Merci encore et si quelqu'un peut m'aider, merci

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Le problème vient de l'initialisation de x dans le code de mr_samurai.
    Pour la concaténation il faut que pour tous les k, x{k} soit [].
    Une proposition :[EDIT]ou plus simple encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x=cell(1,N);
    for k = 1:N
       % .... 
       for i = 1:NbObjets{k}
           % ....
       end
       x{k} = [cellule{k}.x];
    end

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    MERCI!!!

    Cela me donne quelque chose que je pense pouvoir utiliser comme je veux! JE vais regarder cela de plus près et essayer mes calculs pour voir si tout est OK

    C'est très gentil à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/04/2015, 22h20
  2. Réponses: 10
    Dernier message: 20/04/2008, 21h59
  3. Réponses: 2
    Dernier message: 23/01/2008, 14h07
  4. Réponses: 1
    Dernier message: 25/12/2007, 22h23
  5. Extraire les vecteurs à partir d'une matrice
    Par samia_6 dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/10/2007, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo