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 :

fit bi variable


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Par défaut fit bi variable
    Bonjour,
    je rencontre un problème pour fitter des données à un modèle.
    Il s'agit de valeurs N dépendant de 2 variables, la latitude (l) et le temps (t).
    Le modèle est le suivant:
    Nmod(l,t)=N0+N1cos[(2*pi*t/12)+t1]+N2*(l+pi/2)(l-pi/2)cos[(2*pi*t/6)+t2]
    Les paramètres à ajuster étant N0, N1, N2, t1 et t2.
    Je n'ai aucune idée de comment faire ni aucun point de départ.
    Pouvez vous m'aider?
    Merci

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    commence par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x0 = [0,0,0,0,0]; % améliorer si tu as une idée de point de départ meilleur
    fun = @(x,xdata) x(1)+x(2)*cos[(2*pi*xdata(2)/12)+x(4)]+x(3)*(xdata(1)+pi/2)(xdata(1)-pi/2)cos[(2*pi*xdata(2)/6)+x(5)]
    x = lsqcurvefit(fun,x0,xdata,ydata);
    ou x represente les coefficients [N0, N1, N2, t1, t2], x0 les coefficients de départ pour l'optimisation
    xdata est une matrice m*2 [l t] de tes entrées
    ydata une matrice m*1 [N] du résultat à fitter

    bon pour ça faut avoir l'optimisation toolbox
    si tu as la curvefitting toolbox, ça doit être encore plus simple

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Par défaut
    Bonjour et merci leFab.
    Je ne comprends pas ce que doivent être xdata et ydata.
    Ce que j'ai: un vecteur l contenant les latitudes de dimensions 1*36, un vecteur time de dimension 1*124 et une matrice N de dimensions 36*126.

    D'après la façon dont tu écris fun, xdata(2) contient le vecteur temps (dimension 1*36) et xdata(1) les latitudes (dim 1*124). Comment écrire alors xdata, si ces 2 composantes n'ont pas les même dimensions?
    Ce que tu appelles ydata correspond, je pense à ma matrice N. Est-ce correct?

    Merci de m'aider

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    c'est ca ...

    solution un peu bourrin pour construire xdata et ydata :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [L,T] = meshgrid(vLatitudes,vTemps)
    xdata = [L(:) T(:)];
    ydata = N(:);
    avec peut être des transposés à mettre, peut être inverser L T dans meshgrid....
    le but est de créer 2 vecteur colonnes de 36*124 éléments pour la latitude et le temps et un vecteur N de même taille avec correspondance

    y a peut etre mieux et plus propre, mais c'est comme ca que j'ai l'habitude de faire

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Par défaut
    Bonjour,
    le vecteur L contient 36 éléments.
    Le vecteur T contient 124 éléments.

    Logiquement, il est impossible de les concaténer:
    Par exemplz:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    L=ones(36,1);
    T=ones(124,1);
    xdata = [L(:) T(:)];
    ??? Error using ==> horzcat
    All matrices on a row in the bracketed expression must have the 
     same number of rows.
    Je ne comprends pas ta méthode!

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    la première ligne est indispensable (meshgrid)
    L et T sont alors des matrices de 36*124 ou 124*36 suivant l'ordre d'appel dans la fonction meshgrid
    ensuite L( : ) et T( : ) sont des vecteurs colonnes de 36*124 éléments, tout comme N( : ) et tu as alors une correspondance élément par élément (L(12) & T(12) -> N(12))
    et donc tu obtient des xdata et ydata cohérents que tu peux utiliser dans lsqcurvefit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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