Eval et nom de variable sur Matlab
Résolu
Use_Soap
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Après avoir trouvé un post qui m'a été d'une grande aide, j'aurai besoin d'un peu plus d'aide pour mettre en oeuvre ma boucle
Voici ce que j'ai fait :
x =9
for u=0:x;
for i=1:6;
for j=1:6;
eval(['K' num2str(u+1) ' = zeros(33,33)'];
eval(['K' num2str(u+1) ' (3*u+i,3*u+j) = K' num2str(u+1) ' (3*u+i,3*u+j) + 'k' num2str(u+1)' (i,j)'])
end;
end;
end;
En gros j'ai 10 petites matrices de taille 6x6 ( k1 jusqu'à k10), et je veux les mettre au bon endroit dans 10 plus grandes matrices de taille 33x33 ( K1 jusqu'à K10 )
Je crois que le principe est bon, les matrices vont au bon endroit par contre, je n'arrive pas gérer le eval pour appeler les bonnes matrices et nommes les autres
Voilà, merci par avance pour votre aide
Et désolé d'être aussi bref mais comme à chaque fois, je m'y prends au dernier moment :D
Après avoir trouvé un post qui m'a été d'une grande aide, j'aurai besoin d'un peu plus d'aide pour mettre en oeuvre ma boucle
Voici ce que j'ai fait :
x =9
for u=0:x;
for i=1:6;
for j=1:6;
eval(['K' num2str(u+1) ' = zeros(33,33)'];
eval(['K' num2str(u+1) ' (3*u+i,3*u+j) = K' num2str(u+1) ' (3*u+i,3*u+j) + 'k' num2str(u+1)' (i,j)'])
end;
end;
end;
En gros j'ai 10 petites matrices de taille 6x6 ( k1 jusqu'à k10), et je veux les mettre au bon endroit dans 10 plus grandes matrices de taille 33x33 ( K1 jusqu'à K10 )
Je crois que le principe est bon, les matrices vont au bon endroit par contre, je n'arrive pas gérer le eval pour appeler les bonnes matrices et nommes les autres
Voilà, merci par avance pour votre aide
Et désolé d'être aussi bref mais comme à chaque fois, je m'y prends au dernier moment :D
A voir également:
- Eval matlab
- Gnu octave matlab - Télécharger - Édition & Programmation
- Fonction matlab - Forum Matlab
- Programmer avec MATLAB ✓ - Forum Matlab
- Intervalle sur matlab ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
3 réponses
Salut
Il est totalement inutile de poster ton message en plusieurs exemplaires, t'auras pas une réponse plus vite, bien au contraire.
Y a moult erreurs dans les lignes que t'as écrites.
1) Il manque une parenthèse dans le premier eval.
2) Il manque une espace et il y a une apostrophe en trop dans le deuxième eval (définition des Kn).
3) Tu réinitialises tes matrices Kn à chaque passage dans les boucles i et j. Au final, même en corrigeant le deuxième eval (définition des Kn), tu mettrais dans les Kn une seule valeur, la dernière de toutes celles que tu voudrais mettre. La correction donnerait ça...
Il est totalement inutile de poster ton message en plusieurs exemplaires, t'auras pas une réponse plus vite, bien au contraire.
Y a moult erreurs dans les lignes que t'as écrites.
1) Il manque une parenthèse dans le premier eval.
2) Il manque une espace et il y a une apostrophe en trop dans le deuxième eval (définition des Kn).
3) Tu réinitialises tes matrices Kn à chaque passage dans les boucles i et j. Au final, même en corrigeant le deuxième eval (définition des Kn), tu mettrais dans les Kn une seule valeur, la dernière de toutes celles que tu voudrais mettre. La correction donnerait ça...
x=9; for u=0:x eval(['K' num2str(u+1) '= zeros(33);']); for p=1:6 for q=1:6 eval(['K' num2str(u+1) '(3*u+p,3*u+q)=K' ... num2str(u+1) '(3*u+p,3*u+q)+k' num2str(u+1) '(p,q);']); end end endMais ces 3 boucles, c'est pas vraiment utile. Une simplification possible donnerait ça...
x=9; for u=0:x eval(['K' num2str(u+1) '=blkdiag(zeros(3*u),k' ... num2str(u+1) ',zeros(27-3*u));']); endBonne nuit
Vi dsl pour le double post, j'ai vu trop tard que mon premier post était dans un sujet déjà résolu et après, j'ai oublié de l'effacer :)
En tout cas, merci beaucoup pour toutes ces infos
Je vais essayer de mettre en oeuvre tout ça ( n'ayant jamais utilisé Matlab, il se peut que je galère encore un peu :D )
En tout cas, merci beaucoup pour toutes ces infos
Je vais essayer de mettre en oeuvre tout ça ( n'ayant jamais utilisé Matlab, il se peut que je galère encore un peu :D )
OK, pas grave pour le double post. ;-)
Tu peux pas effacer totalement un message ; pour le faire supprimer, faut alerter la modération en cliquant sur le triangle jaune.
Bon beh sinon, y a pas de quoi ! ;-)
Si t'as d'autres soucis, repasse mais fais un nouveau sujet si la question est très différente de celle-ci.
D'abord parce que j'ai pas réponse à tout et aussi parce qu'un sujet sans réponse a plus de chance d'être visité qu'un sujet dans lequel quelqu'un est déjà intervenu et que si la personne qu'avait répondu la première fois est pas là, tu risques d'attendre une réponse un bon bout de temps dans le "vieux" sujet que t'auras fait remonter.
Ciao
Tu peux pas effacer totalement un message ; pour le faire supprimer, faut alerter la modération en cliquant sur le triangle jaune.
Bon beh sinon, y a pas de quoi ! ;-)
Si t'as d'autres soucis, repasse mais fais un nouveau sujet si la question est très différente de celle-ci.
D'abord parce que j'ai pas réponse à tout et aussi parce qu'un sujet sans réponse a plus de chance d'être visité qu'un sujet dans lequel quelqu'un est déjà intervenu et que si la personne qu'avait répondu la première fois est pas là, tu risques d'attendre une réponse un bon bout de temps dans le "vieux" sujet que t'auras fait remonter.
Ciao