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 :

Code de diffraction


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut Code de diffraction
    Bonjour à tous,

    J'ai un problème dans un code de diffraction écrit en Matlab, concernant apparemment la fonction 'imagesc', mais je ne vois pas trop ce qui cloche...?

    Voici la partie de code concernée :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    clear
    N=300;
    format compact
    clf
    hold off
    start=cputime;
    x=[0:.1:pi];  
    z=zeros(size(x));
    StartPLD=6.2;
    EndPLD=6.35;
    Increment=.002;
    intensity=zeros(1,2000);
    OPL=zeros(1,2000);
    k=1;
    figure(2);clf;
    for pld=StartPLD:Increment:EndPLD,  
      z=zeros(size(x));
      a=0;
      for j=1:N, 
         y=sin(3.*x+a);
         z=z+y;   
         a=a+pld;
      end
      intensity(k)=sum(z.*z);  
      OPL(k)=pld./(2*pi);
      imagesc(OPL(1:k-1),intensity(1:k-1))
      ylabel('Observed irradiance  (Mean-square of sum of all reflections)')
      xlabel('Pathlength difference between adjacent grooves, in wavelengths')
      title(['First-order diffraction pattern for grating with '  num2str(N)  ' grooves.'])
     
      k=k+1;
    end
    hold off
    figure(2)
    ElapsedTime=cputime-start
    figure(3)
    plot(OPL(end-1),intensity(end-1))
    Merci pour vos suggestions.

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Les variables OPL et intensity sont des vecteurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> whos OPL intensity
      Name           Size              Bytes  Class     Attributes
     
      OPL            1x2000            16000  double              
      intensity      1x2000            16000  double
    La ligne suivante pose donc problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagesc(OPL(1:k-1),intensity(1:k-1))
    Qu'espères-tu faire avec la fonction imagesc qui prend classiquement en entrée une seule matrice à 2 dimensions.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    J'espérais juste faire une représentation 2D du vecteur d'intensité...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    C'est assez vague... pourrais-tu être plus précis ou mieux nous montrer un exemple de ce que tu cherches à obtenir ?

    Pourquoi ne pas utiliser plot comme un peu plus loin dans ton code ?

    Une remarque au passage, les crochets sont inutiles dans la ligne suivante :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    Effectivement, en fait j'essaie de représenter une figure de diffraction par un objet circulaire. La forme est du type de l'image jointe.
    Images attachées Images attachées

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    tu ne peux pas représenter intensity sous cette forme puisque c'est un vecteur, il faut revoir le code si tu veux que le domaine de définition soit en 2D.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  2. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 11h29
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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