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 :

Interpolation d'une fonction à 2 variables


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Interpolation d'une fonction à 2 variables
    Bonjour, j'ai un petit souci au niveau de l'affichage de mon interpolation.

    En fait mes 2 variables x, y ainsi que ma fonction z sont des vecteurs (140x1) :


    x ||||||||| y ||||||| z
    696 |||||||-11||||||| 27
    1036|||||||32||||||| 29
    696 |||||||-11 |||||||27
    1036 |||||||46||||||| 26
    5806||||||| 27||||||| ...
    3507|||||||-84|||||||
    500||||||| 46|||||||
    4857||||||-32|||||||
    4106 ||||||-83|||||||
    500 |||||||-81|||||||
    696 ||||||| 32|||||||
    696||||||| 58|||||||
    2819 |||||||58|||||||
    4106 ||||||-83|||||||
    5777 ||||||-19|||||||
    ... |||||||| ...


    J'ai d’abord commencé par la construction d'une grille régulière


    Ensuite je calcul les valeurs pour chaque nœud de la grille en utilisant la méthode d’interpolation par le Voisin le plus proche 'nearest'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZI=griddata(x,y,z,XI,YI,'nearest');
    Quand j'applique ce code le programme m'affiche un Warning
    Warning: Duplicate data points have been detected and removed - corresponding values have been
    averaged.
    > In griddata>nearest at 189
    In griddata at 126



    J’obtiens 3 vecteurs
    XI (140x140) YI(140x140) ZI(140x140)

    Du coup, au final quand j'ai envie de visualiser la courbe en 3D
    J'obtiens une courbe de forme très bizarre est-ce que c'est à cause de mes variables qui ne sont pas classés en ordre ou plutôt à cause de la méthode d'interpolation ??

    Merci

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    Salut

    peux tu mettre la figure en question ?

    sinon ca ne vient pas de l'ordre (pas d'importance tant que tes 3 vecteurs sont cohérents entre eux)
    la méthode d'interpolation par contre joue beaucoup
    celle que tu a choisi (plus proche voisin) va créer des paliers (est ce ca que tu trouve bizarre ?)
    essayes les autres (linear, cubic ...) et vois si ca te convient mieux

    Fabien

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Nom : Sans titre.png
Affichages : 603
Taille : 67,7 Ko

    Quand j'utilise les autres méthodes, pareil j'obtiens des formes bizarres.
    En plus les autres méthodes ne permettent pas de trouver toutes les valeurs possibles du vecteur z.

    En fait ce que me dérange le plus dans la figure ce n'est pas la forme mais plutôt les couleurs qui sont répartis partout

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    essayes la fonction gridfit

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Matlab ne reconnait pas la fonction gridfit

    Undefined function or variable 'gridfit'



    Je crois que j'ai un problème de monotonie car mes vecteurs x et y ont des valeurs dès fois croissante puis dès fois décroissante du coup quand j'interpole forcément j'obtiens des valeurs fausses je pense c'est à cause de ça non ?

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    salut

    gridfit est une fonction disponible sur matlab central : suit le lien que j'ai mis sur le post précédent
    elle donne des résultat différents (la surface ne passe pas forcement sur les points) mais dans ton cas cela améliorera probablement

  7. #7
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    Citation Envoyé par matlab4 Voir le message
    Je crois que j'ai un problème de monotonie car mes vecteurs x et y ont des valeurs dès fois croissante puis dès fois décroissante du coup quand j'interpole forcément j'obtiens des valeurs fausses je pense c'est à cause de ça non ?
    non c'est pas ca : regarde l'exemple d'utilisation de gridfit dans la doc matlab, les vecteurs ne sont pas du tout triés

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur en science de l'environnement
    Inscrit en
    Août 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en science de l'environnement

    Informations forums :
    Inscription : Août 2013
    Messages : 97
    Points : 149
    Points
    149
    Par défaut
    Je crois que j'ai un problème de monotonie car mes vecteurs x et y ont des valeurs dès fois croissante puis dès fois décroissante du coup quand j'interpole forcément j'obtiens des valeurs fausses je pense c'est à cause de ça non ?
    En effet je pense que ça peut être le problème:

    Tu as essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [x,ord] = sort(x);
    y = y(ord);
    z = z(ord);
    ?

Discussions similaires

  1. Trouver le minimum d'une fonction à 3 variables
    Par QuintusII dans le forum MATLAB
    Réponses: 13
    Dernier message: 08/12/2008, 14h19
  2. Réponses: 4
    Dernier message: 03/06/2008, 18h55
  3. Tracer une fonction à 2 variables
    Par NewtonRaphson dans le forum Mathématiques
    Réponses: 10
    Dernier message: 17/01/2008, 10h36
  4. appel d'une fonction par variable
    Par jgarin dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/01/2008, 12h56
  5. Interpolation d'une fonction
    Par nox78 dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/06/2006, 14h31

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