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 :

boucle for sur une formule


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut boucle for sur une formule
    Bonjour,

    J'aimerai crée un programme qui permet de réaliser la formule suivante : REFLEX(i) = n(i -1) - n(i)

    • Explication du programme :
    • La variable i correspond au nombre de couche
    • J'affecte à chaque couche une valeurs que l'on appelle value_tab et pour chaque couche : n(i) = sqrt(value_tab(i));
    • Puis j'effectue la formule suivante : REFLEX(i) = n(i -1) - n(i)


    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
     
    clc 
    clear all
    close all
    input_couche = input('nombre de couche = ');
    nbr_couche = input_couche;
    for i = 1:nbr_couche
    %     Affecte une valeurs pour chaque couche     
          value_tab(i) = input('value_tab = ');
          n(i) = sqrt(value_tab(i));
     
    %     Coefficient de réflexion
          REFLEX(i) = n(i-1) - n(i) ; 
     
    end
    Mais ce message d'erreur s'affiche constamment :
    Attempted to access n(0); index must be a positive integer or logical.
    Le programme n'arrive pas à atteindre n(0) quand i = 1.

    Comment palier à ce problème ?

    Cordialement TO.

  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
    Ce n'est pas un problème lié à MATLAB mais un problème d'algorithme.

    Si tu as besoin de 2 couches pour calculer un coefficient de réflexion, alors pour N couches tu obtiendras N-1 coefficients :

    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
    clear all
    close all
     
    input_couche = input('nombre de couche = ');
    nbr_couche = input_couche;
     
    for i = 1:nbr_couche
     
    %     Affecte une valeurs pour chaque couche     
          value_tab(i) = input('value_tab = ');
          n(i) = sqrt(value_tab(i));
     
    end
     
    %     Coefficient de réflexion
    REFLEX = -diff(n) ;
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Merci d'avoir répondu.

    Je ne comprend pas très bien la fonction diff(X), d'après la documentation MATLAB, elle permet de réaliser l'instruction suivante X(m)-X(m-1) ?

    Or : dans mon cas je souhaite faire X(m -1) - X(m), et si par exemple je souhaite faire X(m -1) + X(m) ?

    Cordialement TO.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    C'est bon j'ai trouvé, merci !

    Cordialement TO.

Discussions similaires

  1. [XL-2010] Formule avec boucle For dans une macro
    Par Derfixien dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/09/2014, 22h18
  2. [CS3] Faire une boucle for sur des champs texte
    Par Bubuk dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 18/12/2013, 17h06
  3. Boucle for sur une variable sans prendre en compte les espaces
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/03/2012, 11h15
  4. Syntaxe pour une boucle for sur des combobox
    Par Tifriis dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/10/2010, 13h52
  5. Réponses: 6
    Dernier message: 26/11/2007, 15h25

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