to find cosine fit and residual ?
5 views (last 30 days)
Show older comments
I have this data as X data column
1. [624.0397 743.4188 641.3096 764.2928 698.1912 832.8933 799.6397 767.3729 735.1792 703.093 671.0012 638.9143 605.9839 668.0182 0 0 0 0 0 0]
Y column
1. [8.071650105 8.144216751 8.177926597 8.171846343 8.073710465 7.999249364 8.00676841 8.064808175 8.061246346 8.064100517 8.041524691 8.045426565 8.068412239 8.225694432 0 0 0 0 0 0]
As the same way I am having data set for third column having x data set and again fourth column I am having y data set as so on upto 520, and also all having same number of element mean column having same number of element and some zero values also.
and want to smooth, cosine fit and want to compute residual for this I have tried
x=[];
y=[];
for j=1:519
x=AC(:,j+1);
y=AC(:,j);
xx=find(y);
xxx=max(xx);
y1=smooth(x,y(1:xxx),'moving',5);
fitted_curve=cos(x);
end
errors are ??? Error using ==> smooth at 131 X and Y must be the same length.
So how can I fit in cosine and compute residual of fit.
0 Comments
Answers (1)
Tom Lane
on 2 Apr 2013
It appears you start with x and y taken from columns of AC, so they are the same length. Then when you call smooth you pass only part of y. Perhaps you also want to pass the same elements of x.
The fit function (Curve Fitting Toolbox) has the ability to fit Fourier series and sums of sines (equivalent to cosines for your purposes). Try "help fit" and see if that gets you pointed in the right direction.
2 Comments
Tom Lane
on 2 Apr 2013
If you need to evaluate the fit at specified x values, as you show in your example with polyval, then the output from the fit command supports that directly:
x = rand(100,1);
y = cos(x) + randn(100,1)/10;
f = fit(x,y,'sin1')
xx = linspace(0,1);
plot(x,y,'bx',xx,f(xx),'r-')
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!