Bonjour à tous,
Je fais appel à vous car je suis bloqué sur un exercice d'électrostatique où il faut créer N charges ponctuelles(cercles) localisées aléatoirement dans une boîte d’air(rectangle) qui grâce à PDEtool me donnera un dessin de la chose.
Dans l'exemple où N=4, je crée donc 4 cercles (x,y,rayon,'Dipole') où x et y, sont chacun aléatoires dans une boite dont les coordonnées x et y sont comprises entre -50 et 50.
Ce que j'ai réussi à faire et qui fonctionne mais qui est évidemment beaucoup trop fastidieux est ci dessous :
Malheureusement dans le cas où N=50 c'est inimaginable de réécrire 100 fois la même formule pour x puis pour y puis initialiser 100 cercles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 a=50; x1=randperm(100,1)-a; y1=randperm(100,1)-a; x2=randperm(100,1)-a; y2=randperm(100,1)-a; x3=randperm(100,1)-a; y3=randperm(100,1)-a; x4=randperm(100,1)-a; y4=randperm(100,1)-a; pderect([-50 50 -50 50],'BoiteAir'); pdecirc(x1,y1,4,'Dipole1'); pdecirc(x2,y2,4,'Dipole2'); pdecirc(x3,y3,4,'Dipole3'); pdecirc(x4,y4,4,'Dipole4'); set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','BoiteAir+Dipole1+Dipole2+Dipole3+Dipole4');
j'ai essayé de faire ça avec un for mais il faudrait donc que je fasse quelque chose comme ça (qui je sais va faire grincer des dents plus d'un)
En supposant que ce soit bon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 N=4; for i=1:N eval(['X',num2str(i),'=randperm(100,1)-a;)']); eval(['Y',num2str(i),'=randperm(100,1)-a;)']); pdecirc(X(i),Y(i),4,'Dipole(i)'); end, Comment faire que toutes mes formes créées s'ajoutent dans le set (dernière ligne du premier code) ?
Je sais que j'en demande peut-être beaucoup mais Matlab n'est que tout nouveau pour moi.
Je vous remercie d'avance, en espérant avoir été la plus clair possible.![]()
Partager