Curve fitting with a known coefficient

9 views (last 30 days)
Mahesha MG
Mahesha MG on 4 Jul 2013
I want to fit set of data points (x,y) to the equation 'g*x+a*(x/248.7860)^3*c'. Here g and a are unknown coefficients and x is independent variable. c is coefficient which is an array of size same as x (c varies with x but it is not weight) c is known. How to do the fitting? I tried the following: ft = fittype( 'g*x+a*(x/248.7860)^3*c', 'independent', 'x','independent', 'c', 'dependent', 'y' ); But it is not working. Any other way to solve?
  1 Comment
Valentin Fazenda
Valentin Fazenda on 9 Mar 2020
I have the same problem but with a complex equation :
PA=fittype('(Fz*(b1*Fz+b2))*sind(b0*atand((((b3*(Fz^2)+b4*Fz)*exp(-b5*Fz))/(b0*(Fz*(b1*Fz+b2))))*(x+(b9*Fz+b10))-((b6*Fz^2+b7*Fz+b8)*(1-b13*sind(x+(b9*Fz+b10))))*((((b3*(Fz^2)+b4*Fz)*exp(-b5*Fz))/(b0*(Fz*(b1*Fz+b2))))*(x+(b9*Fz+b10))-atand((((b3*(Fz^2)+b4*Fz)*exp(-b5*Fz))/(b0*(Fz*(b1*Fz+b2))))*(x+(b9*Fz+b10))))))+(b11*Fz+b12)','problem', 'Fz');
where Fz is known and is an (known) array of size same as x and i dont' know how write it so that Fz will not anymore be calaculated but used by the computer

Sign in to comment.

Answers (2)

David Sanchez
David Sanchez on 4 Jul 2013
You can use the curve fitting tool. Type:
cftool
at the command window. Then, select " custom equation " as your target and type your equation on the right box.
  1 Comment
Mahesha MG
Mahesha MG on 4 Jul 2013
Edited: Mahesha MG on 4 Jul 2013
I tried this. But it takes c as unknown coefficient and gives some value for it.

Sign in to comment.


Matt J
Matt J on 4 Jul 2013
Edited: Matt J on 4 Jul 2013
Functions from the Curve Fitting Toolbox seem like overkill here, considering that you have a very simple, linear fitting to do:
A=[x(:), (x(:)/248.7860).^3.*c(:)];
p=A\y(:);
g=p(1);
a=p(2);

Categories

Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!