Bonjour,
Suite à une expérience j'ai collecté des datas que je fit à la chaine avec la fonction fit de matlab .
Il s'agit de la compilation de trois fonctions :
Il y a en tout 12 variables que je contraint dans des bornes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 F1= 'A1 .*exp(1-((1+((abs(x - XO1)/W1) .^ N1)) .^ (1/N1)))'; F2= 'A2 .*exp(1-((1+((abs(x - XO2)/W2) .^ N2)) .^ (1/N2)))'; F3= 'A3 .*exp(1-((1+((abs(x - XO3)/W3) .^ N3)) .^ (1/N3)))'; %Somme des fonctions en log + offset F_TOTAL=['log(',F1,'+',F2,'+',F3,')+0.1'];
J'utilise le paramètre Robust et également un vecteur poids.
J'arrive à fitter correctement, mais il semble que lors de changement brutaux durant l'expérience,
on observe des changement 'doux' des variables (concerne surtout XO1 et XO2, ou plutôt XO1-XO2).
Tandis que par Fortran on a des gros changement (pour les mêmes datas) qui correspond plutôt à ce qu'on attend (comme le montre le graphique, chaque point= 1 data=1fit=XO1-XO2).
J'ai essayer de changer plusieurs options de fit (Diffminchange, Diffmaxchange, TolFun,TolX,MaxIter,MaxFunEval) mais j'obtient le même type de resultat.
J'aimerais mieux comprendre pourquoi je n'obtient pas la même chose avec Matlab qu'avec Fortran ?
Actuellement je commence à fitter avec une autre fonction lsqcurvefit mais pour l'instant non concluant, il existe peut être d'autres fonctions pour m'aider?
Merci par avance,
Partager