Incrementation du nom de variable MATLAB

Résolu/Fermé
yoyo - 19 oct. 2008 à 20:05
 yoyo - 20 oct. 2008 à 09:06
Bonjour,
j'ai récemment demandé comment incrémenter un nom de variable MATLAB et sacabouffe que je remercie a trouvé la réponse que je cherchais. Le code correspondant étant par exemple:

n=3;
for p=1:n,
eval(['A' num2str(p) ' = 3*p']);
end;

ce qui donne

A1=3
A2=6
A3 =9

L'étape suivante qui me pose problème est de réussir à incrémenter les Ap et de leur affecter non plus une expression dépendante de p, mais (je pense) une fonction qui prenne en argument des strings entre autre. Je m'explique par l'exemple suivant:

g1=rect2('1e-3','2e-4','base','corner','pos',{'0','0'},'rot'­,'0');
g2=rect2('1e-3','2e-4','base','corner','pos',{'1e-3','0'},'r­ot','0');
g3=rect2('1e-3','2e-4','base','corner','pos',{'2e-3','0'},'r­ot','0');

est un code matlab généré par un logiciel interfacé avec matlab (comsol multiphysics). Le truc, c'est que j'aimerais codé non pas 3 mais un nombre N d'éléments. Après le 'pos', j'aimerais incrémenter avec un vecteur seg(p).

Je ne sais pas quelle syntaxe je dois utiliser. Déjà, j'ai essayé de mettre un string dans l'argument d'une fonction, et matlab a crié.

Merci pour votre aide, ça me débloquerait grave!!!

2 réponses

Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
19 oct. 2008 à 20:52
Salut
Je suis pas sûr d'avoir tout compris mais il me semble que ce que tu veux faire, c'est la même chose que ton problème précédent en quelque sorte.
seg = (1e-3)*(0:n-1);
for p=1:n
eval(['g' num2str(p) ' = rect2(''1e-3'',''2e-4'',''base'',''corner'',''pos'',{num2str(seg(p)),''0''},''rot'­­',''0''); ']);
end
Bonne nuit
3
effectivement, c la meme choz que celui que tu m'as donnée avant. Le truc c que j'espere que cette syntaxe est autorisée. et pour le moment je peux pas le vérifier.

Merci bcp en tt k!
0