# Leas squares curve fit problem

1. Jun 22, 2012

### pazmush

The main problem is that I have no idea what I am doing. But second to that I am attempting to fit a curve to some data using the equation

y = ((1/A(x-B)^(C+1))+D)^-1

if that makes sense

I need to get the values for A,B,C and D and so have been looking into lsqnonlin but I am having problems. I may also be making life hard for myself as I am also trying to incorporate it into a GUI. Here is an example of what I have been trying

this is my function

Code (Text):
function F = myfun(x,Vg,Gd)
A = x(1);
B = x(2);
C = x(3);
D = x(4);

F = (((1/(A.*(x-B)^(C+1)))+D)^-1)-Gd;
end
this is how I attempt to use lsqnonlin

Code (Text):
cla reset;
Vg = A.data(:,1);
Id = A.data(:,6);
Vd = A.data(:,5);
Gd = (Id./Vd);

x=lsqnonlin(@myfun,[1*10^9 -1 1 3*10^5],[],[],[],Vg,Gd);
%Gd_new = (((1/(x(1).*(x-x(2))^(x(3)+1)))+x(4))^-1);
%semilogy(Vg,Gd,'o',Vg,Gd_new);
can anyone give me a hand in either starting again or making this work?

thanks

2. Jun 22, 2012

### gsal

is this matlab?

I have a problem with the choice of variable names.

You know that array x() that you have chosen to pass 4 constants (A,B,C,D) in one shot into the function? How come that the scalar x, and I mean the only 'x' in the equation, has the same name? I think you have to decouple those two things, for starters.

3. Jun 23, 2012

### Old Guy

If your problem is that you have vectors x and y that contain your data, and you want to find A, B, C and D for the equation shown as a fit to that data, try the curve fitting toolbox. Run cftool, select x and y as your data set, then under fit select custom equation and you can enter the equation in the form you want, and it will calculate the coefficients.