MATLAB : générer un nom de variable

Résolu/Fermé
padawan - 11 juin 2008 à 13:56
lazkike Messages postés 441 Date d'inscription vendredi 10 septembre 2004 Statut Contributeur Dernière intervention 14 décembre 2013 - 15 avril 2011 à 17:18
Bonjour,

Je ne suis pas une experte sur Matlab et je rencontre un problème. Le voici (je suis dans une interface MATLAB):

1/ Je crée une boîte de dialogue pour que l'utilisateur me donne le nom d'une variable
var = inputdlg('Enter variable name','Predicted label',1,{''});
2/ Je veux que dans la base workspace une variable soit créée avec pour nom celui rentré par l'utilisateur, et pour valeur un vecteur que j'ai calculé plus haut dans mon code.

PISTES : je me suis penchée sur les fonctions genvarname, assignin et eval, mais je ne parviens pas à obtenir le résultat escompté...

Please HELP

Merci par avance.

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 juin 2008 à 14:09
eval devrais fonctionner pourtant.
eval([ nom_variable "= nom_vecteur ;"]);
où nom_vecteur est le nom du ton vecteur et nom_variable, la variable dans laquelle la chaine de caractère entrée par l'utilisateur pour le nom de la variable est stocker.
Je ne vois pas pourquoi ça ne fonctionnerai pas chez toi et chez moi oui.
2
D'abord merci d'avoir répondu et de ton indulgence.

En fait le problème n'est pas là mais dans l'utilisation conjointe du eval et du assignin. C'est certainement une évidence pour les pros, mais bon je galère :

Ceci fonctionne :
w = ones(1,5);
var = inputdlg('Enter variable name','Predicted label',1,{''});
eval([ var{1} '=w ;'])

Mais après pour faire en sorte que cette nouvelle variable au contenu w et au nom fixé par l'utilisateur apparaisse dans la base workspace, je ne sais pas comment faire ...
assignin('base',?????????, w);

Merci.
0
Poursuite des recherches infructueuses :

evalin('base',[ var{1} '=w ;']) ; ne fonctionne pas non plus (message d'erreur).
1
Bon voilà,

Je viens de trouver et je me rends compte que ce doit bien être une des eules formulations que je n'avais pas essayée : il me manbquait les crochets.

Pour ceux qui seraient intéressés, la solution est :
(dans ma fonction)

w = ones(1,7);
var = inputdlg('Enter variable name','Predicted label',1,{''});
assignin('base', [var{1}], w);

c'est évident une fois qu'on l'a trouvé!!

Je mets résolu!
0
lazkike Messages postés 441 Date d'inscription vendredi 10 septembre 2004 Statut Contributeur Dernière intervention 14 décembre 2013 139
15 avril 2011 à 17:18
Merci pour la solution. ça marche nikel !
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 juin 2008 à 15:24
OK, je ne comprends pas trop, pour moi il suffit de définir une variable pour qu'elle aparaisse dans le workspace. Il me semblait que le workspace était une sorte de "who" graphique.
0