MATLAB: Sinusoidal fit with fixed points

cfitfitfixed-pointsinusoid

Is there a way to fit a sine curve to some data points but hold some of the fitted points at known locations? I'm trying to hold the extrema constant because they are known points but the rest of the fit can be anything.

Best Answer

If the unknown curve is given by y=F(x,p) where p is the vector of unknown parameters, and x and y are vectors of curve samples, then fmincon could be used to estimate p, with a sufficiently good initial guess p0,
p_fit = fmincon(@(p) norm(F(xdata,p) - ydata)^2, p0, [],[],[],[],[],[],...
@(p) F(xfixed,p)-yfixed, options)
where xfixed and yfixed are the x,y pairs that you want constrained. Then, of course, you get the curve with
y_fit=F(xdata,p_fit);
Related Question