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 :

Problème calcul simple fonction


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Problème calcul simple fonction
    Bonjour, je suis débutant sur Matlab et je dois effectuer le calcul suivant:


    Voici mon code, je sais que ça doit pas être bien sorcier mais je suis incapable de trouver la bonne formulation...

    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
    clear all;
    close all;
    warning off;
    clc;
     
    p = xlsread('mesures1.xlsx','G20:G893');
    V = xlsread('mesures1.xlsx','L20:G893');
     
    B = 35;
    S = 26;
    compte = 0;
    while compte<length(p)
       pmi(compte) = (4./(pi*B^2*S)).*p.*((V(compte)-V(compte-1))./2.);
       compte = compte+1;
    end
    Merci de l'aide!

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Attention, se n'est pas conseillé de laisser ton nom et prénom dans le code ....

    Voici se que je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    close all;clear all;clc;
    B=35;
    S=26;
     
    p=1:10:101;
    V=10:3:46;
    somme=0;
     
    for jj=1:length(p)
        somme=somme+p(jj)*((V(jj+2)-V(jj))/2);
    end
     
    pmi=(4/(pi*(B^2)*S))*somme

    ps : Pour "P" et "V" j'ai pris de simple vecteur. A toi d'y placer tes valeurs.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci, ton code fonctionne bien mais dès que je met mes valeurs, j'obtiens ce message d'erreur:

    Attempted to access V(875); index out of bounds because numel(V)=874.
    Pourtant il n'y a rien de particulier aux ligne 874 et 875 de mon tableau excel...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par snt13 Voir le message
    Pourtant il n'y a rien de particulier aux ligne 874 et 875 de mon tableau excel...
    Juste que tu as 874 valeurs et non 875
    Et donc lorsque jj arrive à 873, MATLAB évalue V(jj+2) = V(875) et comme V contient 874 valeurs, et bien V(875) MATLAB il connait pas.
    Petite erreur de Suzuki3694 à corriger donc:

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ça marche en mettant -2 mais j'ai pas 875 valeurs dans mon tableau mais 913...
    donc je comprend pas pourquoi il bloquait à 874....

    Merci de l'aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Vu la ligne V = xlsread('mesures1.xlsx','L20:L893'); (893-20+1 = 874), ainsi que ton erreur, j'en doute fortement

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Merci Winjerome pour la correction . J'ai tapé mon code un peu trop vite ^^,.

    Et +1, ta fonction "xlsread" ne se concentre que sur 874 valeurs.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour les explications. Mais y a t il moyen de lire plus que 874 valeurs ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Il te suffit de changer ces deux nombres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    V = xlsread('mesures1.xlsx','L20:L893');
    Remarque: si tu ne connais à priori pas ces nombres, tu peux ne pas mettre cet argument, xlsread lira alors tout ton fichier.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    c'est ok pour la lecture du fichier excel mais ca ne serait pas plutôt +1 dans la fonction et -1 après la boule for au lieu de +2 et -2 ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Toujours selon le code de Suzuki3694, non.
    Suzuki3694 utilise les indices V(jj+2) et V(jj) au lieu de V(jj-1) et V(jj+1) apparaissant dans ta formule, ce qui revient au même.
    D'ailleurs à ce propos, (encore désolé Suzuki3694 ) mais ce serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    somme=somme+p(jj+1)*((V(jj+2)-V(jj))/2);
    Ou pour suivre la formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for jj = 2:length(p)-1
        somme=somme+p(jj)*((V(jj+1)-V(jj-1))/2);
    end
    Dernière modification par Invité ; 29/07/2011 à 16h42.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci! C'est clair maintenant!

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    encore désolé Suzuki3694
    Pas de souci, j'ai écrit le code un peu trop vite . Puis je suis aussi là pour apprendre

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

Discussions similaires

  1. problème avec un calcul simple avec 13 chiffres
    Par mysterauto dans le forum Excel
    Réponses: 5
    Dernier message: 05/04/2014, 23h23
  2. Réponses: 1
    Dernier message: 05/04/2013, 10h58
  3. Simple fonction de calcul
    Par AlaEddineJEBALI dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/01/2011, 14h11
  4. Problème calcul simple JAVA
    Par absot dans le forum Général Java
    Réponses: 4
    Dernier message: 03/06/2010, 21h44

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