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 :

Valeur de retour de la fonction diff


Sujet :

MATLAB

  1. #1
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Valeur de retour de la fonction diff
    Salut à tous,

    Voici mon pb.
    J'ai une matrice de dimension 1001*60 représentant la température de 60 profils océanographiques sur 1001 mètres.
    Cependant, certaines profondeurs peuvent être vides et sur lesquels je souhaite appliquer une interpolation linéraire simple.

    Pour chaque profil, j'exécute le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %Détection des profondeurs pour lesquelles la température est renseignée
    indFiniteValues = find(isfinite(Profondeur(:,i))==1);
    %Différence entre chaque profondeur
    valeurDiff = diff(indFiniteValues,i);
    Exemple des valeurs de température pour le profil nº1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Profondeur | Température
    0 NaN
    1 25.22
    2 25.23
    3 25.21
    4 25.22
    5 NaN
    6 NaN
    7 24.96
    Pour le premier profil, tout se passe correctement, en retour j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    indFiniteValues =
         2
         3
         4
         5
         8
     
    valeurDiff =
         1
         1
         1
         3
         1
    En revanche, pour le 2ème profil qui contient les valeurs suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            NaN
       22.9340
       22.9275
            NaN
            NaN
       22.6597
       22.4370
       22.3244
            NaN
       21.6122
    les valeurs renvoyées sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    indFiniteValues =
         2
         3
         6
         7
         8
     
    valeurDiff =
        -4
         2
         1
        -2
         1
    Je ne comprends pas ce que renvoie valeurDiff étant donné que la différence est censée, dans le cas étudié, renvoyée des valeurs positives !!!

    Si quelqu'un a une idée...
    Merci d'avance.

  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 956
    Points
    52 956
    Par défaut
    Pourquoi utilises-tu le second argument de DIFF ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    indFiniteValues = [2     3     6     7     8    10]
     
    diff(indFiniteValues)
    diff(indFiniteValues,1)
     
    diff(indFiniteValues,2)
    diff(diff(indFiniteValues))
     
    diff(diff(diff(indFiniteValues)))
    indFiniteValues =

    2 3 6 7 8 10


    ans =

    1 3 1 1 2


    ans =

    1 3 1 1 2


    ans =

    2 -2 0 1


    ans =

    2 -2 0 1

    ans =

    -4 2 1

  3. #3
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut pas de second paramètre pour Diff !
    Effectivement.

    Merci.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/06/2007, 16h05
  2. Réponses: 5
    Dernier message: 18/09/2006, 15h17
  3. Réponses: 2
    Dernier message: 11/05/2006, 19h41
  4. valeur de retour de la fonction "system" en C
    Par benhoeil dans le forum C
    Réponses: 14
    Dernier message: 16/09/2005, 12h30
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 14h58

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