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