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

Scilab Discussion :

[Débutant] Nom de variable


Sujet :

Scilab

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut [Débutant] Nom de variable
    Bonjour, je travail depuis peu sur Scilab. Mon problème n'est pas lié au langage de Scilab, mais je ne sais pas comment m'y prendre pour réaliser une affectation automatique de nom à des variables.

    Contexte:
    A partir d'un fichier texte, j'extrais des chaînes de caractères qui sont stockées dans un tableau appelé "libvoie", et des données numériques stockées dans un autre tableau appelée "data".

    Problème:
    J'aimerai que ces chaines de caractères soient les noms d'autra tableaux.
    Il faut que cette tache soit effectuée automatiquement.

    Comme il me semble que mon explication n'est pas super claire je vous montre un petit exemple pour illustrer ce que je veux faire.

    Exemple:
    libvoie = (I1 I2 I3 I4 I5 I6 I7 I8 ...)

    data1 = (5 4 2 6 9 8 7 1 2 3 9 ...)

    Et je veux que dans la variable I1 il y ait les données de data1

    I1 = (5 4 2 6 9 8 7 1 2 3 9 ...)

  2. #2
    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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Le lien vers la faq ne répond pas vraiment à ma question.

    Je vais détailler un peu mon problème

    Les chaînes de caractères stockées dans la variable libvoie ne sont pas que des I1, I2, I3, ...., In.
    C'est plutôt:
    libvoie = (I1 I2 P U2 I33 ...)
    Ce n'est donc pas un caractère suivit d'un numéro qui est incrémenté à chaque nouvelle cellule.

    Dans le lien de la FAQ, c'est le programmeur qui tape le nom du tableau (dans la faq c'est A1,A2,...An), alors que dans mon cas je veux que ce soit le programme qui définisse le nom de la variable.
    En fait mon problème c'est en quelque sorte, comment faire pour que le programme "lui-même" puisse redéfinir le nom d'une variable.

  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
    Ben en fait si la réponse est donnée par la 1ère ligne : ce qu'il ne faut pas faire (ie EVAL)

    Mais sinon quel est l'intérêt ?

    Ce serait plus propre d'utiliser des structures (Argh Scilab ne dispose pas des champs dynamiques...Tant pis)
    Enfin une solution quand même avec des structures pour associer tes noms et tes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    S(1).nom=libvoie{1};%je suppose que libvoie est un tableau de cellules*
    S(1).valeur = data1;
    %ou "mieux" pour pouvoir faire une boucle :
    S(1).valeur = eval(sprintf('data%d',1));%mais EVAL saymal
    *Oui ce serait bien quand tu donnes un exemple de donner le "vrai" code, celui qu'on peut tester sur le logiciel...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci Caro-Line pour tes réponses. Je vais essayer en utilisant les structures.

    L'intérêt du programme que je fais est d'extraire des données de plusieurs fichiers et de les réorganiser, afin de pouvoir ensuite effectuer des calculs sur ces données.Les données étant des signaux électriques échantillonnés.

    Je trouvais pratique pour les utilisateurs qui se serviront par la suite de mon programme, que le nom des variables correspondent aux noms des courants et tensions échantillonnées que l'on trouve dans les fichiers qui servent d'entrée à mon programme.
    Ainsi l'écriture des calculs qu'ils auront à faire aurait été plus "intuitive".

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous,

    Je me permets de poster dans ce sujet car j'ai une question sensiblement similaire, sur l'utilisation de Scilab.

    Je souhaite pouvoir interagir avec un GUI.
    Pour ce faire j'y ai inclue des "checkbox" ainsi que des "pushbutton".
    Etant donnée que le nombre de "checkbox" n'est pas toujours le même en fonction de ce que je vais utiliser comme fichier d'entrée (dépendant de "list_variable" ci-dessous) je souhaite faire une boucle qui génère les "checkbox" automatiquement.

    Voici mon code:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    clear 
    close 
    clc
     
    //
    guiw1=1000; 
    guih1=700; 
    list_variables=["variable1","variable2","variable3","variable4","variable5",...
                    "variable6","variable7","variable8","variable9","variable10"];
     
    // figure
    f=figure(1,...
      "position",[0,0,guiw1,guih1+20],...
      "figure_name","Liste_des_variables");
     
    //pushbutton
    boutton=uicontrol(f,...
            "style","pushbutton",...
            "string","Graph",...
            "position",[600,680,200,20],...
            "horizontalalignment","center",...
            "Callback","traceit()");
     
    // liste handles
    s= msprintf("vari%d=gca()\n",(1:10)') 
    execstr(s) 
    clear s
     
    // chekboxes
    for i=1:10
        vari=uicontrol(f,...
            "style","checkbox",...
            "string",list_variables(i),...
            "position",[10,guih1-i*20,200,20],...
            "horizontalalignment","left");
    end
    clear i
     
    //graph
    function traceit()
    endfunction
    Dans un premier temps, j'ai essayé la solution proposée par Caro-line pour génère automatiquement le bon nombre de variable, à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //exemple
    for i=1:10
        a{i}=2*i;    
    end
    Cela fonctionne avec Matlab pas avec Scilab. Ai-je fait une erreur?

    Suite à des recherches j'ai trouvé une solution suivante pour génère ma liste de variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // liste handles
    s= msprintf("vari%d=gca()\n",(1:10)') 
    execstr(s) 
    clear s
    Mais maintenant je n'arrive pas à trouver comment "remplir" chacune de ces variables dans ma boucle for (ici appelé "vari"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // chekboxes
    for i=1:10
        vari=uicontrol(f,...
            "style","checkbox",...
            "string",list_variables(i),...
            "position",[10,guih1-i*20,200,20],...
            "horizontalalignment","left");
    end
    clear i
    J'ai essayé différentes syntaxes mais à chaque fois j'obtiens la même erreur "vari does not exist"...

    Pourriez-vous m'indiquer si cette logique est correcte et si oui qu'elle est la bonne syntaxe à adopter?

    Merci par avance de votre aide.

    A bientôt.

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

    Comme montré dans le lien du premier message de Caro-Line, on n'utilise pas de variables nommées var1, var2,... mais un seul tableau var(1), var(2),...
    Vient donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i=1:10
        var(i)=uicontrol(f,...
            "style","checkbox",...
            "string",list_variables(i),...
            "position",[10,guih1-i*20,200,20],...
            "horizontalalignment","left");
    end

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour Winjerome,

    Merci beaucoup pour votre réponse, comme quoi en pensant avoir bien lu...
    Et encore une fois le dicton "Pourquoi faire simple quand on peut faire compliqué" est de rigueur

    Merci encore.

    Bonne journée.

    A bientôt

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

Discussions similaires

  1. [Débutant] Nom de variable avec des indices
    Par scraven dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/04/2007, 21h02
  2. [débutant] Nom de variable commun
    Par karidrou dans le forum Access
    Réponses: 2
    Dernier message: 07/12/2005, 17h09
  3. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  4. Réponses: 5
    Dernier message: 28/04/2004, 16h06
  5. [JSP][débutant] recupérer des variables...
    Par yass dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/04/2004, 11h05

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