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 :

Interpoler une "non fonction"


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Université de Savoie
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Université de Savoie

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Interpoler une "non fonction"
    Bonjour à tous,

    Voilà mon problème: je dispose de deux vecteurs de coordonnées X et Y, et représentant un objet précis, sous forme de nuage de point. Certaines valeurs de f(x) sont donc redondantes.
    Je cherche a récupérer uniquement la forme de cet objet (et donc me séparer des points inutiles à l'intérieur de cette forme). J'ai d'abord pensé à récupérer le 1er point non nul par la droite puis par la gauche, en suivant l'axe des ordonnées, et en définissant un pas assez fin, de sorte a ne rater aucune valeur.
    Cependant, la précision de mon acquisition ne me permet pas d'être assez précis pour que cette méthode fonctionne (en effet, il arrive que le premier point récupérer soit au milieu de la forme).
    J'ai donc voulu "augmenter" le nombre de point de mon nuage à l'aide d'une interpollation. Mais le fait que f ne soit pas une fonction m'empeche de procéder comme cela.
    Aussi, j'aurai souhaité savoir s'il existait un moyen de contourner ce problème, ou si je devais m'y prendre autrement afin de récupérer l'"enveloppe" de ma forme.

    Merci
    Cordialement

  2. #2
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    poste les données
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  3. #3
    Candidat au Club
    Homme Profil pro
    Université de Savoie
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Université de Savoie

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Voilà le type de données: Données.xlsx

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    oui en effet c'est pas vraiment interpolable comme données !!!

    pour déterminer l'enveloppe, tu as une fonction convhull ... mais le résultat ne te plaira pas trop
    sinon sous matlab central il y a une fonction hullfit qui a plus l'air de correspondre à ton besoin

    Fabien

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    ton problème consiste à extraire une enveloppe non convexe. Ce n'est pas un problème facile et je te déconseilles d'essayer de le programmer par toi-même. Je ne connais pas hullfit conseillé par Fabien. C'est une première piste à essayer. sinon, cherche sur google "enveloppe non convexe matlab". Tu trouveras un lien vers une discussion de ce forum ainsi que plusieurs ressources à étudier. Tiens-nous au courant de tes résultats.

    et une recherche en anglais : "non convex hull" matlab te donne ça.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #6
    Candidat au Club
    Homme Profil pro
    Université de Savoie
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Université de Savoie

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses. J'avais déjà essayé la piste "enveloppe convexe" sans succès, je vais donc essayer "enveloppe non convexe" et voir si j'arrive à aboutir. Je vous tiens au courant de mon avancé.

    Merci

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    enveloppe convexe = convhull
    dans matlab central cherche "hull", il y a plusieurs pistes (dont celle que j'ai mis en lien)

  8. #8
    Candidat au Club
    Homme Profil pro
    Université de Savoie
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Université de Savoie

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    J'ai donc essayé la piste hullfit que l'on m'a conseillé. Sans succès. Le fichier tourne et ne donne aucun résultat sur mon vecteur complet. J'ai essayé en ne gardant qu'une ligne sur deux de mon vecteur mais le resultat n'est pas satisfaisant.
    Je vais essayer de me rabattre sur ce que j'ai pu lire au travers des différentes recherches.

    Merci

  9. #9
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Une approche probabiliste peut être intéressante ici: l'enveloppe s'assimile au support de la distribution, et une enveloppe robuste (laissant quelques points dehors) à un quantile multivarié

    Je commencerai par estimer une densité lissée de ton nuage de point, avec estimateur à noyau (ksdensity ne marche pas en 2D en matlab, mais tu peux trouver des estimateur à noyau multivarié sur le net ou le recoder, c'est pas très dur). Cette densité estimée est une version lisse et fonctionnelle de ton nuage. La forme sera par exemple donnée par une courbe d'isodensité de cette fonction, dont le niveau est à choisir.

    Difficultés à résoudre: quel niveau d'isodensité ou de quantile choisir, comment calculer ces iso-niveaux (peut être imposer une famille paramétrique de densités judicieuse), comment réintégrer les points laissés à l'extérieur (dilatation ?)

    Si tu travailles à une résolution donnée, tu peux traiter l'histogramme plutôt qu'une densité lissée. Une densité estimées par ondelette plutôt que noyau est aussi une possibilité

Discussions similaires

  1. [PHP 5.3] [POO] : faire une fonction quote
    Par gwendoline-bricout dans le forum Langage
    Réponses: 7
    Dernier message: 20/02/2014, 10h41
  2. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12

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