function mat = fdamat(sr,parity,nterms)
% Compute matrix for fda derivation.
% parity can be
% 0 (one sided, all terms included but zeroth order)
% 1 (only odd terms included)
% 2 (only even terms included)
% nterms - number of terms
% sr is the ratio between successive steps
srinv = 1./sr;
switch parity
case 0
% single sided rule
[i,j] = ndgrid(1:nterms);
c = 1./factorial(1:nterms);
mat = c(j).*srinv.^((i-1).*j);
case 1
% odd order derivative
[i,j] = ndgrid(1:nterms);
c = 1./factorial(1:2:(2*nterms));
mat = c(j).*srinv.^((i-1).*(2*j-1));
case 2
% even order derivative
[i,j] = ndgrid(1:nterms);
c = 1./factorial(2:2:(2*nterms));
mat = c(j).*srinv.^((i-1).*(2*j));
end
end % fdamat