Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Minimisation Fonction Gaussienne 2D dans Matlab



  1. #1
    annecha

    Minimisation Fonction Gaussienne 2D dans Matlab


    ------

    Bonjour à tous je me retrouve confronter à un problème.
    J'ai une fonction gaussienne 2D (x,y):
    f(x,y)=1/(2*pi*sigma^2)*exp(-(x^2+y^2)/sigma)

    Je voudrais déterminer la valeur de sigma par minimisation en optimisant ma fonction à partir d'un fichier de valeurs expérimentale importées dans matlab que je nomme g(x,y).

    donc je minimise l'erreur :f(x,y)-g(x,y) afin de trouver le sigma optimal.


    Quelqu'un à une piste SVP? (Fonction à utilisée?, ou code???)

    Merci d'avance c'est vraiment très important pour mon projet!!!

    -----

  2. Publicité
  3. #2
    Terrien

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Il y a quelque chose qui n'est pas claire, ton problème est mal posé.

    Je suppose que ton problème consiste à apprendre une distribution gaussienne sur la base d'observations se présentant sous la forme d'une liste de points de la forme (x,y).
    Mais tu demandes de minimiser f(x,y)-g(x,y), cela implique que tes observations sont en fait des triplets (x,y,z), avec z=g(x,y).

    Si tu cherche à apprendre la distribution gaussienne qui maximise la vraisemblance de tes données (en supposant que c'est une liste de points D={(x1,y2),(x2,y2),...,(xn,yn) }), alors tu cherches sigma* tel que :
    sigma* = max_sigma \prod_i f(x_i,y_i)

    où :
    -max_sigma désigne le maximum en faisant varier sigma dans la fonction f
    -\prod_i f(x_i,y_i) correspond au produit des f(x_i,y_i) sur toutes les observations de D.

    Résoudre ce problème est difficile à cause du produit, mais on peut passer à une somme en utilisant le log, on obtient un problème équivalent :

    sigma* = max_sigma \sum_i log f(x_i,y_i)

    magie magie, \sum_i log f(x_i,y_i) est dérivable par rapport à sigma.

  4. #3
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonjour,
    Merci votre réponse et de votre temps accordé à mon problème.Je crois avoir mal posé mon problème.Au fait j'ai un ensemble de donner (Xn,Yn) correspondant à une distribution gaussienne donné par un modèle numérique. Et j'ai une fonction gaussienne 2d f(x,y) mon modèle analytique qui contient un paramètre sigma que je dois estimer de manière optimale.Pour cela je minimise l'erreur entre mon ensemble de données expérimentales et mon modèle en faisant varier ce paramètre sigma de façon aléatoire, jusqu'à obtenir une erreur minimale qui correspondra à un sigma optimal de mon modèle analytique.
    J'ai pas trop bien compris votre formule de sigma avec le log.. Si vous pouvez réitérer votre explication.Merci

  5. #4
    Dlzlogic

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonjour,
    Je ne peux pas vous répondre dans le cadre de Matlab, parce que je ne l'utilise pas.
    Donc vous avez un ensemble de couples (Xi,Yi) et vous voudriez établir le modèle tel que vous ayez une fonction y=f(x).
    Je connais 2 méthodes
    1- l'ajustement linéaire. Le principe est de trouver les paramètres A et B tels que Y = A + BX soit la fonction la plus probable.
    Ce sera le cas si on minimise la somme des (f(Xi) - Yi)² C'est la méthode des moindres carrés.
    Si on fait un changement de variable, soit x=ln(X) soit y=ln(Y) soit les 2, on obtient ainsi 4 formes différentes et on choisi la meilleure.
    2- l'ajustement polynomial. La fonction cherchée sera de la forme f(x) = Ax^4 + Bx^3 + Cx² + Dx + E

    Si vous n'avez qu'un calcul à faire (ou seulement quelques-uns), envoyez-moi vos données, j'ai tout ce qu'il faut.

  6. A voir en vidéo sur Futura
  7. #5
    Terrien

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Il faut bien comprendre son problème et suivre une série d'étapes logiques pour arriver à la solution.

    Tu cherches la distribution gaussienne qui maximise la probabilité des observations (les valeurs expérimentales).
    Une gaussienne est caractérisée par une moyenne m et une variance sigma.
    Ici tu suppose que m=0, tu cherches donc uniquement sigma.

    Tu cherche donc sigma tel que P(D|sigma) est maximal. Où P(D|sigma) désigne la probabilité des observations D={(x1,y1),...,(xn,yn)}, pour une valeur sigma donnée.

    Si tu suppose que chaque observation (xi,yi) est independant, tu peux factoriser :
    P(D|sigma) = P(x1,y1|sigma) x ... x P(xn,yn|sigma)

    Ça na pas de sens de parler de probabilité d'un point pour une gaussienne (la probabilité d'un point est nulle), on utilise donc sa densité, ici on remplace P(xi,yi|sigma) par f(xi,yi|sigma) où
    f(x,y|sigma)=1/(2*pi*sigma^2)*exp(-(x^2+y^2)/sigma).

    On cherche donc à trouver sigma qui maximise
    f(D|sigma) = f(x1,y1|sigma) x ... x f(xn,yn|sigma)

    on appelle la solution sigma*.

    Comme la fonction log() est strictement croissante, on sait que sigma* maximise aussi
    log(f(D|sigma)).

    Or log(a*b)=log(a)+log(b), on peut donc écrire :

    log f(D|sigma) = log f(x1,y1|sigma) + ... + log f(xn,yn|sigma)

    Tu peut calculer la dérivée de cette fonction par rapport à sigma, tu trouves le sigma qui annule la dérivée, tu en déduis un maximum local, voir global => sigma*.
    Et ainsi tu trouves une solution rassemblant à :
    sigma*=1/n * (x1^2 + y1^2 + ... + xn^2 + yn^2)

  8. #6
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Message pour Terrien

    Bonjour, désolé pour ma réponse tardive.Je viens de voir votre explication pour mon problème.Je vais m'y metre dès maintenant à tete posée et je vous tiendrais au courant de la suite.j'ai besoin de bien lire et comprendre vos explications que je trouve fructueuse.
    Merci beaucoup.

  9. Publicité
  10. #7
    annecha

    Post Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonsoir,
    Je reviens vers vous car il ya un element tres important du probleme que jai mal explique.pour mes donnees experimentales jai a chaque couple de coordonnees (Xn,Yn) jai une valeur Pn correspondante independante.Jai donc un triplet Xn,Yn,Pn) avec Pn=(Xn,Yn)
    Pour mon modele analytique fonction gaussienne jai la meme chose un triplet (Xn,Yn,Fn) avec Fn=(Xn,Yn,sigma).sigma etant mon parametre de ma fonction gaussienne .
    Donc je cherche a trouver le sigma optimal qui me permet davoir legalite suivante:sum(Pn(Xn,Yn))=sum(Fn (Xn,Yn)).
    Donc mes valeurs je dois minimiser Erreur= (sum(Pn(Xn,Yn)-Fn(Xn,Yn))^2/sum(Fn(Xn,Yn))^2)*100. En faisant varier le parametre sigma dans ma fonction gaussienne F(X,Y)=1/(2*pi*sigma^2)*exp(-(X^2+Y^2)/2*sigma^2).
    Je suis bloquer la programmation de ce probleme.Il faut que mon programme fasse le calcul de lerreur de maniere automatique et me sort lq valeur minimale qinsi que le sigmq correspondqnt.

    Merci encore desole pour mes mauvaises explications.Ce projet est hyper important pour moi.
    Merci de maider.
    Blnne soiree.

  11. #8
    Dlzlogic

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonsoir,
    J'ai étudié ce problème de régression avec 3 variables. Je l'ai aussi étudié avec un nombre de N variables (<16), donc je peux vous aider.

  12. #9
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonjour ,
    Je suis tres interesse par votre aide car jai plus beaucoup de temps.Je dois rentre ce projet tres vite
    Quelle est la demarche a suivre pour que vous m'aidiez?
    Ke suis disponible...
    Merci

  13. #10
    Dlzlogic

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonjour,
    S'il y a une ou pas trop de liste, vous pouvez me les envoyer.
    Si il y en a plus je vous envoie mon outil.
    Vous pouvez me joindre par l'intermédiaire de mon site http://www.dlzlogic.com

  14. #11
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Bonjour ,
    suite à votre message.
    Iya pas trop de liste.je vous envois les données et si possible m'envoyer aussi votre outils pour que je puisse etre capable de le faire dans un futur proche.

  15. #12
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Je vous ai envoyé un message à l'adresse comuniquée.
    Pour ceux qui veulent voir mon petit code (si avis ou conseil, pistes). Le modèle mathématique gausssien donc j'ai fait état plus haut sera adapté de la meme façon que celui avec la fonction erf. c'est juste la procédure de détermination de mon paramètre qui me bloque.
    Merci
    voici le petit code:

    R_spot=0.6e-3; %Rayon initial

    x=linspace(0,0.0024,39);

    y=linspace(0,0.0015,39);

    [X,Y]=meshgrid(x,y);

    z=1e-3;


    Scase=1,137e-11

    THETA=Fichier excel (feuille THETA) 39 valeurs;


    % Mon données experimentales

    Inum (X,Y)=Fichier excel (feuille données experimentales) 39 valeurs


    % Mon modèle analytique

    Ianal (X,Y,a) =((-erf((X-R_spot*cos(THETA))/(sqrt(2)*(a*z)))+1)/2+(erf((X+R_spot*cos(THETA))/(sqrt(2)*(a*z)))-1)/2)/(126*Scase)

    Avec a paramètre à déterminer

    Je dois minimiser l'Erreur afin de trouver le bon a:

    Erreur=(sum((Inum (X,Y)- Ianal (X,Y,a)).^2)/sum( Ianal (X,Y,a)).^2)*100

  16. Publicité
  17. #13
    annecha

    Re : Minimisation Fonction Gaussienne 2D dans Matlab

    Ci-joints les données expérimentales
    Merci
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. minimisation de fonction avec matlab
    Par tpscience dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 27/06/2012, 10h34
  2. minimisation de fonction
    Par tpscience dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 26/06/2012, 14h34
  3. Intersection arc cercle et gaussienne avec Matlab
    Par Lostinounette dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 27/05/2010, 09h15
  4. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par °Oo>>PCSI2<<oO° dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 07h16
  5. minimisation de fonction par simplex
    Par Feuerstein dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 23/11/2006, 12h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.