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 :

Nom de variable avec indice..


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut Nom de variable avec indice..
    Bonjour dans cet exemple précis, je choisie un signal pour l'enregistrer dans une sorte de 'buffer' (etalon) avec lequel je vais faire des calculs par la suite...
    je voudrais savoir si dans les noms de mes signaux (exemple v1) je ne pourrais pas remplacer le 1 par une variable i par exemple car je peux avoir plusieurs signaux v (dépend de nbre). là je suis obligé d'écrire des "case" même si je n'ai pas autant de signaux..
    et cela reviens aussi dans la suite de mon programme je trouve pas cela trop jolie...

    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
    for j=1:1:tps
       %pause
       %on choisi un signal etalon au hasard.
    a=rand;
    a=a*nbre;
    a=fix(a);%arrondi à l'entier inferieur
     
    switch a
    case 0
       etalon=v0;
    case 1
       etalon=v1;
    case 2
       etalon=v2;
    case 3
       etalon=v3;
    case 4
       etalon=v4;
    case 5
       etalon=v5;
    case 6
       etalon=v6;
    case 7
       etalon=v7;
    case 8
       etalon=v8;
    end
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    En règle générale, on évite d'utiliser ce genre de variable.
    Voir la à ce sujet : Comment créer des variables nommées A1, A2, A3, ...,AN ?

    Le mieux ici serait certainement de créer un vecteur en associant v(1) à v0, v(2) à v1, ...

    Citation Envoyé par polodu84 Voir le message
    et cela reviens aussi dans la suite de mon programme je trouve pas cela trop jolie...
    D'où l'intérêt d'en faire une sous-fonction ou une fonction imbriquée :

    Sous fonction :

    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
    function principale
     
    for j = 1:1:tps
     
       %pause
       %on choisi un signal etalon au hasard.
        a = rand;
        a = a*nbre;
        a = fix(a);%arrondi à l'entier inferieur
        etalon = testa(a);
     
    end
     
    function etalon = testa(a)
     
    % Les variables v0,V1... doivent être définies ici
     
        switch a
            case 0
               etalon=v0;
            case 1
               etalon=v1;
            case 2
               etalon=v2;
            case 3
               etalon=v3;
            case 4
               etalon=v4;
            case 5
               etalon=v5;
            case 6
               etalon=v6;
            case 7
               etalon=v7;
            case 8
               etalon=v8;
        end
    Fonctions imbriquées :

    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
    43
    44
    function principale
     
    % Les variables v0,V1... doivent être définies
    % avant d'entrer dans la boucle FOR-END
     
    etalon = 0;
     
    for j = 1:1:tps
     
       %pause
       %on choisi un signal etalon au hasard.
        a = rand;
        a = a*nbre;
        a = fix(a);%arrondi à l'entier inferieur
        testa;
     
    end
     
        function testa
     
            switch a
                case 0
                   etalon=v0;
                case 1
                   etalon=v1;
                case 2
                   etalon=v2;
                case 3
                   etalon=v3;
                case 4
                   etalon=v4;
                case 5
                   etalon=v5;
                case 6
                   etalon=v6;
                case 7
                   etalon=v7;
                case 8
                   etalon=v8;
            end
     
        end
     
    end

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Merci! vraiment parfait comme réponse!

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error: File: d:\Documents and Settings\psoyer\Mes documents\Matlab\work\requit2test.m Line: 140 Column: 1
    A function declaration cannot appear within a script M-file.
    J'ai essayé les 2 methodes une par une (dans le même .m) et j'ai ce message d'erreur..?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Ajoute ceci au début du code dans requit2test.m pour transformer ton script en fonction :


  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Par défaut
    oui mais ça change tout...
    j'avais un autre fichier .m contenant tout mes vecteurs et au debut de mon script j'avais ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vecteurs; %charge les vecteurs en memoire
    je vais pas non plus créer une autre fonction pour ce script apres faudra que j'aille à chaque fois les relires...
    Quelle est la meilleur solution?
    actuellement
    1)charge les vecteurs V1 V2..en mêmoire
    2) tire au hazard un vecteur avec rand(a)
    3) copie le vecteur dans etalon
    4)exectution des caluls avec le nouvelle etalon.

    ...merci encore

Discussions similaires

  1. Aide création nom de variable avec 2 indices
    Par gautierd dans le forum MATLAB
    Réponses: 3
    Dernier message: 08/02/2015, 11h44
  2. Choisir les noms des variables avec SAVE et LOAD
    Par Bktero dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/08/2009, 10h00
  3. [Débutant] Nom de variable avec des indices
    Par scraven dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/04/2007, 21h02
  4. Nom de variable avec caracteres []
    Par zevince dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/10/2005, 15h22
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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