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 :

Prédire des valeurs inconnues


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 142
    Par défaut Prédire des valeurs inconnues
    Bonjour,
    Je cherche à prédire les éléments "NaN" de la matrice ci-dessous pour obtenir une surface lisse. En effet, une idée est de choisir à chaque fois une sous-matrice (2*2 par exemple) dans laquelle un seul élément manque (par exemple [NaN ,0.4164;0.4463, 0.5241]) et d'utiliser les 3 éléments connus pour prédire la valeur du 4eme.
    Je ne sais pas si c'est une bonne idée ou non? peut être qqn a deja rencontré ce type de problèmes ?
    Merci d'avance pour vos contributions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
           NaN       NaN       NaN    0.4164 ,   0.4463    0.4463    0.4164       NaN       NaN       NaN
           NaN       NaN    0.4463    0.5241    0.6028    0.6028    0.5241    0.4463       NaN       NaN
           NaN    0.4164    0.5241    0.6952    0.7959    0.7959    0.6952    0.5241    0.4164       NaN
           NaN    0.4463    0.6028    0.7959    0.9288    0.9288    0.7959    0.6028    0.4463       NaN
           NaN    0.4463    0.6028    0.7959    0.9288    0.9288    0.7959    0.6028    0.4463       NaN
           NaN    0.4164    0.5241    0.6952    0.7959    0.7959    0.6952    0.5241    0.4164       NaN
           NaN       NaN    0.4463    0.5241    0.6028    0.6028    0.5241    0.4463       NaN       NaN
           NaN       NaN       NaN    0.4164    0.4463    0.4463    0.4164       NaN       NaN       NaN
           NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN

  2. #2
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    Tu veux faire quoi exactement, d'où viennet ces NaN, ...
    TU veux faire de l'extrapolation ? extrapolation lin"aire, quadratique, spline ???
    Si tu ne sais pas ce que sont ces valeurs, c'est dûr de prédire quoi que ce soit

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 142
    Par défaut
    merci LordPeterPan2 pour ta réponse.
    En faite, les valeurs NaN viennent du faite que j'ai interpolé une fonction sur un domaine plus petit que celui que je veux (pour plus d'explications tu peux regarder la discussion "surface 2D à partir d'une courbe 1D").
    Ce que je cherche à faire tout simplement c'est de remplacer les NaN par des valeurs pour avoir une surface le plus lisse possible et ceci bien sure en utilisant les valeurs connus de la matrice.
    Merci encore

  4. #4
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    Citation Envoyé par nant44 Voir le message
    merci LordPeterPan2 pour ta réponse.
    En faite, les valeurs NaN viennent du faite que j'ai interpolé une fonction sur un domaine plus petit que celui que je veux (pour plus d'explications tu peux regarder la discussion "surface 2D à partir d'une courbe 1D").
    Ce que je cherche à faire tout simplement c'est de remplacer les NaN par des valeurs pour avoir une surface le plus lisse possible et ceci bien sure en utilisant les valeurs connus de la matrice.
    Merci encore
    Dans ces cas là c'est à toi d'extrapoler (exemple en 1D:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    x=-10:10;
    y=sin(x*pi/100);
    xx=-100:100;
    plot(xx,interp1(x,y,xx,'linear','extrap'))
    Il existe la même chose pour interp2

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Eventuellement tenter le coup avec la fonction de John d'Errico : inpaint_nan

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut !

    Ton problème concerne l'algorithmique et non spécifiquement MatLab. Tu ne l'as donc pas posté dans le bon forum. Je laisse aux modérateurs le soin de déplacer la discussion s'ils le jugent utiles. En attendant, je vais quand même essayer de te proposer une solution.

    Tes données ne sont pas tombées du ciel. Il en résulte qu'elles ont certaines propriétés. Dans ton exemple, elles présentent deux axes de symétrie et elles semblent tendre asymptotiquement vers zéro lorsqu'on s'éloigne à l'infini (ou lorsqu'on arrive au bord de la figure, c'est difficile à dire, mais c'est toi qui sais).
    Tu choisis un ensemble de fonctions orthogonales f_k(i,j) présentant les propriétés de symétrie et de comportement asymptotiques vues ci-dessus, à l'aide duquel tu approximes ou interpoles ta fonction f(i,j), puis tu extrapoles sur les points où tu as des NaN.

    Jean-Marc Blanc

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 142
    Par défaut
    Merci FR119492. C'est sure que mes données ne sont pas tombées du ciel. En effet, j'ai une distribution monodimensionnelle (1D) symétrique quelconque (i.e. un vecteur de dimension N*1) et je veux obtenir une distribution 2D à partir de la distribution 1D, cad une matrice N*N. Cette distribution 2D doit avoir les meme propriétés que la distribution 1D. Autrement dit, avoir une symétrie de révolution par rapport à la normale passant par le centre de la matrice. La discussion "surface 2D à partir d'une courbe 1D" explique bien ce que je veux faire mais comme personne ne répond j'ai décidé de poser le problème autrement.

    Sinon j'ai pas compris ce que tu voulais dire par "Tu choisis un ensemble de fonctions orthogonales f_k(i,j)..."

    Merci encore

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  3. [SQL] Ma requête m'oblige à saisir des valeurs manuellement
    Par bossun dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/10/2003, 13h29
  4. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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