IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

générer des points aléatoires dans les 2/3 externe d'un cercle


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut générer des points aléatoires dans les 2/3 externe d'un cercle
    Bonjour,

    Je veux générer des points aléatoires dans les 2/3 externe d'un cercle (mon cercle est de rayon 600 c'est à dire que je veux des points aléatoires d’abscisses entre 400 et 600 ou entre -400 et -600 et d'ordonnées entre 400 et 600 ou entre -400 et -600)
    le centre de mon cercle a les coordonnées (0,0)

    Ce code génére des points aléatoires dans tout le cercle, mais je veux bien des points dans les 2/3 externe,Qui peut m'aider, merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    point=rand(2,5);
    P=600*[point(1,:).*cos(2*pi*point(2,:));point(1,:).*sin(2*pi*point(2,:))]

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 953
    Points
    52 953
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    th = rand(1,100)*2*pi;
    r = rand(1,100);
     
    x = (r*200+400).*cos(th);
    y = (r*200+400).*sin(th);
     
    figure
     
    plot(x,y,'r*')
    axis equal
     
    hold on
    th = linspace(0,2*pi,80);
    plot(400*cos(th),400*sin(th),'b:',600*cos(th),600*sin(th),'b-')
    Images attachées Images attachées  

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup,
    ça fonctionne très bien

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    juste une remarque, les coordonnées des x et y ne sont pas compris entre 400 et 600 ou -400 et -600. Je veux que l'axe du repère passe par le centre de la cercle

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 953
    Points
    52 953
    Par défaut
    Je ne comprends pas ton dernier message...

    Essaie ceci alors :

    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
    17
    18
    th = rand(1,100)*2*pi;
    r = rand(1,100);
     
    x = (r*200+400).*cos(th);
    y = (r*200+400).*sin(th);
     
    idx = x<-400 | x>400 | y<-400 | y>400;
    x = x(idx);
    y = y(idx);
     
    figure
     
    plot(x,y,'r*')
    axis equal
     
    hold on
    th = linspace(0,2*pi,80);
    plot([400 -400 -400 400 400],[400 400 -400 -400 400],'b:',600*cos(th),600*sin(th),'b-')
    Images attachées Images attachées  

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup Dut,

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Points distribués de façon aléatoire uniforme à l'intérieur d'un cercle
    Si des points sont distribués de façon aléatoire uniforme à l'intérieur d'un cercle la distribution des rayons de ces points n'est pas uniforme.
    Pour générer des rayons de points distribués de façon uniforme dans une couronne délimitée entre les rayons a et b il ne faut pas écrire :
    r=a+x(b-a)
    mais :
    r=sqrt((b^2-a^2)x+a^2)
    x étant la variable aléatoire uniforme sur ]0,1[ (ici : rand).
    Donc la ligne 2 du programme de Dut est inexacte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. générer points aléatoires dans sphère
    Par judithh dans le forum Mathématiques
    Réponses: 5
    Dernier message: 10/05/2012, 21h49
  2. [PHPMailer] Points d'exclamation aléatoire dans les e-mails
    Par Alexdezark dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/07/2011, 09h44
  3. Réponses: 1
    Dernier message: 19/05/2011, 13h48
  4. générer des points aléatoires
    Par gueloude dans le forum MATLAB
    Réponses: 0
    Dernier message: 18/05/2011, 11h24
  5. Réponses: 3
    Dernier message: 08/03/2008, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo