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 :

Variable à étages type structure


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut Variable à étages type structure
    Bonjour,
    Je ne sais pas comment s'appelle la variable que j'utilise.
    Elle vient d'un .mat que je veux créer.
    Actuellement je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for channel_num = 1:size(vbo.channels,2)
        data.signals.labels{channel_num} = vbo.channels(channel_num).name
    end
    ce qui m'ecrit à l'horizontale dans "data.signals.labels" le name de mon channel.
    Je voudrais pouvoir l'écrire à la verticale.
    Faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1 | Capteur 1 | 
    2 | Capteur 2 | 
    3 | Capteur 3 |
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    |      1    |      2    |      3    | 
    | Capteur 1 | Capteur 2 | Capteur 3 |
    Dans la même veine j'ai une autre question
    Je fais dans cette même boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     data.signals.values{channel_num} = vertcat(vbo.channels(channel_num).data, A(1));
    Ce qui a pour effet de me créer X structure dans "data.signals.values" chacune contenant mes données "vbo.channels.data", or je voudrais mettre directement toute mes données dans values , chacune dans une colonne.
    Comment puis-je faire ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    le champs signals.labels de ta variable data est un tableau de cellules.

    Donc pour mettre les éléments en colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for channel_num = 1:size(vbo.channels,2)
        data.signals.labels{channel_num,1} = vbo.channels(channel_num).name
    end

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Merci pour la première partie, par contre j'ai modifié mon post pendant ta réponse et j'ai un petit problème en plus
    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Je reviens à la charge car j'ai du mal expliquer mon problème.
    J'ai une variable que je voudrais copier dans une structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Data <1x1>Struct
        |--Version  "V1.0"
        |--signals <1x1>Struct
               |-- values []
               |-- SampleTime []
               |-- labels <1x1 cell
    Je voudrais copier Tmp dans mais cela se fait dans une boucle car j'ai plusieurs type de values a stocker
    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
     
    Data <1x1>Struct
        |--Version  "V1.0"
        |--signals <1x1>Struct
               |-- values []
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
                         | Val1 | Val2 | Val 3.....|
    et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.signals.values{channel_num}= Tmp
    je me retrouve avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Data <1x1>Struct
        |--Version  "V1.0"
        |--signals <1x1>Struct
               |-- values <1x4 cell>
                         | Val1 <10000x1> double| Val2 <10000x1> double| Val 3<10000x1> double ....|
    alors que je voudrais avoir directement les valeurs dans les colonnes de values au lieu d'avoir à nouveau une cell.

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Que sont ces Val 1,2... par rapport à Tmp ?
    Val i = Tmp pour channel_num = i ?

    Plutôt que d'utiliser un tableau de cellules, utilise un tableau numérique, et utilise channel_num en tant qu'indice de colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.signals.values(:,channel_num) = Tmp;

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    dans ma boucle je charge Tmp avec un tableau de double que je veux mettre en colonne dans value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for channel_num = 1:ChennelNumber
        Tmp = vbo.channels(channel_num).data;
        data.signals.values{:,channel_num} = Tmp;
    end
    Si je fais comme précédemment j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    The left hand side is initialized and has an empty range of indices.
    However, the right hand side returned one or more results.
    
    Error in ChannelExport (line 229)
        data.signals.values{:,channel_num} = Tmp;
    Un bon dessin valant mieux que 1000 mots
    Dans l'image ci-dessous je montre la structure de data,
    le tableau Tmp et avec la flèche rouge comment je veux le mettre dans data


  7. #7
    Invité
    Invité(e)
    Par défaut
    Tableau numérique => utilisation des parenthèses, j'avais pourtant bien mis en rouge.
    Pense aussi à effectuer une préallocation.

    Sinon, directement sans boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.signals.values = cat(2, vbo.channels.data);

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/09/2013, 13h53
  2. Variables de type Structure
    Par Sphost dans le forum Fortran
    Réponses: 3
    Dernier message: 24/06/2008, 14h51
  3. Réponses: 10
    Dernier message: 17/01/2008, 13h20
  4. Variable de type structure
    Par Houssem dans le forum WinDev
    Réponses: 4
    Dernier message: 08/08/2006, 10h49
  5. Réponses: 6
    Dernier message: 29/04/2006, 20h37

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