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:
fonction u_ghb:
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*/
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:
Je comprends pas trop ce que cela signifie ?....d'ou sort ce YDATA ???? 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] = ...
"Matrix dimensions must agree" --> j'ai verifie les dimensions de x,y , z et data...elles sont bien identiques
quelqu'un a une idee ?
Partager