How to fit function with 3 variables

kx=-0.5:0.00666:0.5;
ky=kx;
w=5:0.1:20;
KXYW=[kx(:) ky(:) w(:)];
f = @(KxyW,b) b(1)-((b(2)*(KxyW(:,1)-X0)-b(3)*(KxyW(:,2)-Y0))/b(4)).^2+((b(3)*(KxyW(:,1)-X0)+b(2)*(KxyW(:,2)-Y0))/b(5)).^2+((KxyW(:,3)-W0)/b(6)).^2;
B0=[0.008 0.5 0.5 0.1 0.1 0.5];
B = lsqcurvefit(f,B0,KXYW,M);
What is important M is size 151x151x151 so when i run this code i got this statment:
Error using lsqcurvefit (line 262)
Function value and YDATA sizes are not equal.
I know f should be the same size as M but i dont know how to do this.
Generaly my task is to find parameters (b(1),b(2)...) of fitted function to area near maximum value. I did find max of M.
This is result of calling : surface(M(:,:,6)) (so you know how it's look, there is 151 of this)

Réponses (0)

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by