Accéder à la variable par le nom de la chaîne de
J'ai besoin de charger les données expérimentales dans scicoslab, un (assez mal conçu) clone fourche de scilab qui se produit à l'appui de modélisation graphique. La documentation sur le web est assez pauvre, mais il est assez similaire à scilab et octave.
Les données que j'ai besoin de processus est contenue dans un certain nombre de fichiers de texte: Data_005
, Data_010
, ..., Data_100
. Chacun d'eux peut être chargé à l'aide de la -ascii drapeau de la loadmatfile
commande.
Le problème vient du fait que loadmatfile("foo", "-ascii")
charge le fichier foo.mat
dans une variable nommée foo
. Afin de cycle sur les fichiers de données, j'aurais besoin de faire quelque chose comme:
for i = [5:5:100]
name = sprintf("Data_%02d", i);
loadmatfile(name, "-ascii");
x = read_var_from_name(name);
do_something(x);
end
où ce que je recherche est un builtin read_var_from_name
qui me permettrait d'accéder à l'intérieur de la table des symboles par chaîne.
Savez-vous si il existe une fonction similaire?
Notes:
- Il n'y a pas moyen de passer outre ce problème si votre fichier est en ascii format;
- Dans cette phase, j'ai pu également utiliser octave (pas de modélisation graphique est impliqué), bien qu'il se comporte de la même manière.
OriginalL'auteur Dacav | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Les travaux ci-dessus dans MATLAB et Scilab de la documentation dit qu'elle a aussi un
eval
fonction. Vous ne savez pas si je vous ai bien compris, si.OriginalL'auteur arne.b
@arne.b a une bonne réponse.
Dans votre cas, vous pouvez le faire aussi dans matlab:
eval()
est considéré comme le mal) merci de souligner ce point; je n'avais aucune idée de cette syntaxe existé!est en effet mal.
OriginalL'auteur Oli
permet de passer à travers vos points un par un:
eval
fonction qui fait ce que vous voulez. Toutefois cette fonction est dépréciée en faveur deevstr
. Il y a aussi leexecstr
fonction qui mérite d'être étudié.loadmatfile
, comme ce que j'ai compris, "tente" pour charger les variables définies dans un MATLAB.mat
fichier (MATLAB exclusif de la forme d'un tableau) dans l'espace de travail Scilab. Par exemple, si y est une variablefoo
il va "essayer" de créer la variablefoo
et les charges de sa valeur depuis le script MATLAB. Cochez cette exemple. Je voudrais créer une variablex(i) = foo
dans la boucle for. encore une fois, votre question n'est pas complètement clair..mat
fichiers.OriginalL'auteur Foad