fitting an equation to the curve

3 次查看(过去 30 天)
Megha
Megha 2018-11-15
评论: Rik 2018-11-15
I have set of data X,Y and i would like to fit an equation of the form
.
I want to find for which n, the curev fits the best.
Any help!
  9 个评论
Rik
Rik 2018-11-15
You really shouldn't shadow the error function with a variable. Once you rename it, this code should work. I tried implementing fminsearch, but it is difficult to find a good way to select only discrete results.
Torsten
Torsten 2018-11-15
It also works with shadowing :-) But I admit that it's not advisable.

请先登录,再进行评论。

回答(3 个)

KSSV
KSSV 2018-11-15
Read about polyfit
N = 100 ; n = 2 ;
x = linspace(0,2*pi,N) ;
y = sin(x).^n ;
%
p = polyfit(x,y,7); % you can change 7 here...
x1 = linspace(0,2*pi);
y1 = polyval(p,x1);
figure
plot(x,y,'o')
hold on
plot(x1,y1)
hold off
  5 个评论
Megha
Megha 2018-11-15
It is not the polyfit that i want.
I want the equation of the form Y = after i should fit the curve.
In the above given example as you told we can vary 7, but hwat is 7 here, it is the order of
polynomial equation. not the value of 'n'.
Here, you have already define 'n', but in our case we dont know n
This is like trial and error, where-in, i should check each value of 'n' and find the best fit

请先登录,再进行评论。


madhan ravi
madhan ravi 2018-11-15
编辑:madhan ravi 2018-11-15
use interp1() with appropriate method:
x = linspace(-2*pi,2*pi,100) ;
xx=linspace(x(1),x(end),1000);
y = sin(x).^7 ;
yy=interp1(x,y,x,'spline')
figure
plot(x,y,'o',x,yy,'r')
  1 个评论
Megha
Megha 2018-11-15
编辑:Megha 2018-11-15
I would like to mention i do not want to polyfit the equation.
I have a dataset, Y and angles in X. There is a nearly type of distribution.
So i want to fit the dataset with eqn for different "n" such that i can find best fit.

请先登录,再进行评论。


Image Analyst
Image Analyst 2018-11-15
My favorite fitting function is fitnlm() in the Statistics and Machine Learning toolbox. It could easily find this n. Just attach your data in a .mat file and I can do it for you. You have a non-linear equation in variable n. You could turn it into a linear equation in n by taking the log of the data and then using polyfit, but do you know how that affects the accuracy? Why not use fitnlm() to fit a non-linear model to n right from the start?
  4 个评论
Torsten
Torsten 2018-11-15
编辑:Torsten 2018-11-15
sin(x)^a is complex-valued if sin(x)<0 and "a" not being an integer. How should this be healed by including a lower bound for "a" ?
Rik
Rik 2018-11-15
Ah, yes, you are right. But as I already mentioned, it doesn't matter. The exponent should be an integer, so this will be a real value for any valid n.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by