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 :

Fonction lsqcurvefit/souci mineur


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut Fonction lsqcurvefit/souci mineur
    Bonjour tout le monde,

    J'ai un souci à comprendre le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [x,resnorm] = lsqcurvefit(@(x,xdata) myfunction(x,4),x0,[],ydata,[-Inf,-Inf,0,0],[],options_lsqcurvefit) ;
    Ce qui me gêne c'est surtout ce @(x,xdata) suivi de "myfuntcion" où xdata n'est pas appelé.
    De plus un peu plus loin on voit que xdata est égal à [].
    Du coup j'avoue ne pas saisir le fonctionnement.
    Enfin je comprends le principe de cette fonction (moindre carré pour les problèmes non linéaire) mais là vraiment je bloque sur ce @(x,xdata) ...

    Si quelqu'un a une idée il ne faut pas hésiter

    (j'essaye de me servir de ce code pour un problème vraiment similaire!).

    Cordialement,

    Hollow

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Le @(x,xdata) suivi de "myfuntcion" permet de précsiser que lsqcurvefit s'applique sur la fonction myfuntcion avec comme variable d'entrées : x et xdata.

    Par contre, je trouve étonnant la façon d'appeler myfonction :
    Regarde les exemples de la doc, il faut plutôt mettre :
    (et du coup xdata doit apparaître dans la fonction myfonction)

    De plus comment l'algorithme peut s'exécuter si xdata est un vecteur vide?? c'est sur xdata et ydata que s'effectue l'identification de x... tu l'as testé ce code? Il donne un résultat?

    Je te conseille de bien regarder les exemples de la doc, si tu as des questions, n'hésite pas.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Points : 53
    Points
    53
    Par défaut
    Le xdata peut etre nul (pas sûr; si tu l'utilise pas, il faut qu'il soit au moins de même longueur que ydata). En fait lsqcurvefit fait une approximation des moindres carré entre ydata et la sortie de myfunction. Le seul parametre vraiment obligatoire que doit prendre myfunction est le x.

    myfunction est un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function y=myfonction(x,xdata,autre variable)
    "autre variable n'est possible que si tu passe par le @(x,xdata)"

    par exemple tu cherche les paramétre de tes points ydata en Ae-t/tau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y=x(1)*exp(-xdata/x(2))
    Mais si tu veut faire des "fitting originale" tu n'a pas besoin du xdata, il suffit que y soit de meme longueur que ydata pour faire l'approximation

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Oui effectivement, j'ai écrit un peu vite.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut
    Merci bien!

    En fait dans la fonction "myfunction" les arguments sont justes les paramètres "x" et l'ordre d'un polynôme (ici égal à 4).
    La fonction n'est pas de moi, mais j'ai testé et ça tourne sans problème.

    Mais j'avoue que j'y comprenais pas grand chose avec ces xdata en vecteur vide, et le myfunction où le xdata n'intervient pas.

    Merci pour votre aide,

    Hollow

Discussions similaires

  1. [Mail] Fonction Mail - Soucis de Charset
    Par Lost In Translation dans le forum Langage
    Réponses: 17
    Dernier message: 27/05/2009, 11h33
  2. [Débutant] Utilisation de la fonction lsqcurvefit
    Par xe4b4ct dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/05/2009, 10h31
  3. souci mineur sur percobol
    Par razily dans le forum Cobol
    Réponses: 2
    Dernier message: 05/03/2009, 17h28
  4. Utilisation de la fonction lsqcurvefit
    Par altera14 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/12/2007, 09h40
  5. DRIVER - fonctions dispatch - soucis de compilation
    Par - Robby - dans le forum Windows
    Réponses: 1
    Dernier message: 26/01/2006, 21h13

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