jeudi 31 juillet 2014

Matlab, eval: Dynamic variable naming with eval/Création dynamique de variables

The purpose is to dynamically name variables.  Example: I wish to store the value returned  by a function (func) in different variables according to a parameter i. /
[french] le but de la manoeuvre est de créer dynamiquement des variables (avec des noms dynamiques). Exemple, je souhaite stocker les valeurs retournées par une fonction dans différentes variables en fonction de la valeur d'un paramètre.[/french]
Basically
for i=1:10
      a=func(param1, param2,i); (exemple a=sin(i*pi));
end

Of course in this way a is always overwritten./ Dans cette solution la variable a  est toujours écrasé.

If I want to dynamically create variables and store the different returned values in these variables, I can us eval
[french]Si je veux créer dynamiquement les variables, j'utilise la fonction eval[/french]

for i=1:10
      val=strcat('a',num2str(i))
      a=func(param1, param2,i);(exemple a=sin(i*pi));
      eval([val'=a;'])
end

If this way, the 10 returned values will be stored in a1, a2, ....,a10