% dx = diffCenter(x,dt)
% Computes the second-order finite difference approximation of x with
% respect to t. A one-sided second order difference is used at the end
% points, so size(dx) == size(x).
% x = [m, n] = matrix of function values over a uniform time grid n
% dt = sampling period of x (default = 1)
% d = dx/dt = first derivative of x wrt t
% This command is very similar to Matlab's gradient command. The
% difference between the two is how they handle the boundaries.
% DiffCenter (this function) uses a second-order finite difference,
% while gradient (by Matlab) uses a first-order finite difference.
% The functions are identical for interior points.
% See also: cumInt, diff, gradient
Matthew Kelly (2019). diffCenter (https://www.mathworks.com/matlabcentral/fileexchange/54459-diffcenter), MATLAB Central File Exchange. Retrieved .
Neat! I wasn't aware of the gradient function. I read through the code for gradient, comparing it to diffCenter (my function).
The major difference between diffCenter and gradient is in how they handle the boundaries of the data. diffCenter uses a second-order (one-sided) finite difference, while gradient uses a first-order finite difference. Both use a second-order difference on interior points. As a result, the finite difference approximation used by gradient will have a spike in error at the boundaries.
That being said, gradient supports multi-dimensional derivatives and better error handling, while diffCenter does not.
In reading through diffCenter, I actually found an error: the coefficients in the boundary differences were off by a factor of 2, which is now fixed (version 2.0).
The standard MATLAB function gradient already does this. So, I don't know how this would be useful.
BUG FIX: The one-sided difference coefficients were off by a factor of two! They are now correct.
Added a reference to the Matlab command gradient, which is very similar to diffCenter.
still trying to make image fit in window properly
Fixed photo. Again.
Re-sized image so it isn't cropped poorly by file exchange.
added more tags