MATLAB : générer un nom de variable

Résolu
padawan -  
lazkike Messages postés 455 Statut Contributeur -
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.
A voir également:

3 réponses

Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
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
padawan
 
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
padawan
 
Poursuite des recherches infructueuses :

evalin('base',[ var{1} '=w ;']) ; ne fonctionne pas non plus (message d'erreur).
1
padawan
 
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 455 Statut Contributeur 139
 
Merci pour la solution. ça marche nikel !
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
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