%% Find the Derivatives of a Curve Using the differentiate Function
% Create a baseline sinusoidal signal.

xdata = (0:.1:2*pi)';
y0 = sin(xdata);

% Add response-dependent Gaussian noise to the signal.

noise = 2*y0.*randn(size(y0)); 											
ydata = y0 + noise;

% Fit the noisy data with a custom sinusoidal model.

f = fittype('a*sin(b*x)');
fit1 = fit(xdata,ydata,f,'StartPoint',[1 1]);

% Find the derivatives of the fit at the predictors.

[d1,d2] = differentiate(fit1,xdata);

% Plot the data, the fit, and the derivatives.

subplot(3,1,1)
plot(fit1,xdata,ydata) % cfit plot method
subplot(3,1,2)
plot(xdata,d1,'m') % double plot method
grid on
legend('1st derivative')
subplot(3,1,3)
plot(xdata,d2,'c') % double plot method
grid on
legend('2nd derivative')

% You can also compute and plot derivatives directly with the cfit plot method, as follows:

figure
plot(fit1,xdata,ydata,{'fit','deriv1','deriv2'})

% The plot method, however, does not return data on the derivatives, unlike the differentiate method.
% Copyright 2020 The MathWorks, Inc.