MATLAB: Trying to find best fit for cosine curve

best fitcosinecurve fittingfitregressregression

Hello,
I have 4 data points that I have plotted and are supposed to yield a cosine wave. How do I go about finding the best fit for this cosine wave? I understand 4 points is not a lot but am trying to get the best fit I can.
data = [1 4.2101; 2 -33.0595; 3 -5.6488; 4 76.2462]
Thank you for your help!

Best Answer

This works:
data = [1 4.2101; 2 -33.0595; 3 -5.6488; 4 76.2462];
x = data(:,1);
y = data(:,2);
yu = max(y);
yl = min(y);
yr = (yu-yl); % Range of ‘y’
yz = y-yu+(yr/2);
zx = x(yz(:) .* circshift(yz(:),[1 0]) <= 0); % Find zero-crossings
per = 2*mean(diff(zx)); % Estimate period
ym = mean(y); % Estimate offset
fit = @(b,x) b(1).*(sin(2*pi*x./b(2) + 2*pi/b(3))) + b(4); % Function to fit
fcn = @(b) sum((fit(b,x) - y).^2); % Least-Squares cost function
s = fminsearch(fcn, [yr; per; -1; ym]) % Minimise Least-Squares
xp = linspace(min(x),max(x));
figure(1)
plot(x,y,'b', xp,fit(s,xp), 'r')
grid