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 :

[Optimization Toolbox][lsqcurvefit] Approximation d'une surface de points


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut [Optimization Toolbox][lsqcurvefit] Approximation d'une surface de points
    Salut a tous,

    Je voudrais faire un fitting d'une surface de point (x,y,z) avec une fonction que je define f(x,y,z) qui contient les parametres a1,a2,a3,a4 (vecteur a).

    Pour cela, je pensais utiliser l'Optimization tool box et la fonction lsqcurvefit de la facon suivante:

    commands:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >> [x,y,z] = plot_mesh(-2,0.01,2,-2,0.01,2,-1,1)   /*ceci cree mes point x,y,z*/
    >> data = [x; y];                    /*je mets les coordonnees x et y dans la meme table*/
    >> a0 = [1.0 1.0 0.05 0.05];  /*vecteur contenant les valeurs intiales du vecteur a*/
    >> [a, resnorm] = lsqcurvefit(@u_ghb, a0, data, z)  /*appel de la fonction lsqcurvefit avec ma fonction u_ghb*/
    fonction u_ghb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function u = u_ghb(x,y,ux,uy,vx,vy,a)
    nx = x./sqrt(x.^2+y.^2)
    ny = y./sqrt(x.^2+y.^2)
    u = -a(2) .* u_gauss(sqrt(x.^2+y.^2)-a(1),a(4)) .* u_gauss(nx.*ux+ny.*uy-1,a(3)) .* u_gauss(nx.*vx+ny.*vy+1,a(3))


    ...mais j'obtiens cette erreur:

    ??? Error using ==> optim/private/lsqncommon
    LSQCURVEFIT cannot continue because user supplied objective function failed with the following error:
    Error using ==> plus
    Matrix dimensions must agree.

    Error in ==> lsqcurvefit at 182
    [x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
    Je comprends pas trop ce que cela signifie ?....d'ou sort ce YDATA ?

    "Matrix dimensions must agree" --> j'ai verifie les dimensions de x,y , z et data...elles sont bien identiques

    quelqu'un a une idee ?

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Est-ce que ton maillage de points est ok ?
    (classique sous matlab)

    j'ai eu un peu le même problème y'a une paire d'années.

    C'est mon maillage de points qui n'allait pas du coup j'avais des erreurs "matrix dimensions must agree".

    ouais gymnastique du cerveau le travail multidimensionnel.

    Bon courgae

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    qu'est-ce que tu veux dire par "maillage ok" ??
    ... si les dimensions en x, y et z sont identiques ? elles le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    >> length(x)
     
    ans =
     
       401
     
    >> length(y)
     
    ans =
     
       401
     
    >> length(z)
     
    ans =
     
       401
     
    >> length(data)
     
    ans =
     
       802

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    oui c'était ça dont je parlais;
    car dans les fonctions matlab, ça fait longtemps mais bon, il prend d'abord le vecteur colonne et après le vecteur ligne ou l'inverse je sais plus; mais c'est pas naturel et j'ai plein de collègues qui bloquaient car au début ils captaient pas.

    là je vois que tu travailles sur un maillage de sorte que la projection planne sur (x,y) fait un carré, donc le problème ne doit pas venir du maillage alors

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    merci ! mais pourtant...tout a l'air ok....je ne pas trop quoi faire.........

Discussions similaires

  1. Approximation d'une surface 2D avec des courbes de Bezier 1D
    Par Invité dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 29/12/2010, 15h24
  2. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06
  3. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37
  4. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

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