MATLAB : générer un nom de variable
Résolu
padawan
-
lazkike Messages postés 455 Statut Contributeur -
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.
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:
- MATLAB : générer un nom de variable
- Gnu octave matlab - Télécharger - Édition & Programmation
- Programmer avec MATLAB ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Boucle for matlab - Forum Matlab
- Matlab vs maple - Forum Logiciels
3 réponses
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.
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.
Poursuite des recherches infructueuses :
evalin('base',[ var{1} '=w ;']) ; ne fonctionne pas non plus (message d'erreur).
evalin('base',[ var{1} '=w ;']) ; ne fonctionne pas non plus (message d'erreur).
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!
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!
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.