% derivatives.m                                         Steve Mann, 1992
%
% computes derivatives of 2 pictures, based on first differences
% If E was 480 by 512, normally El (time)  would be 480 by 512 (same size as E)
%                               Em (down)  would be 479 by 512
%                               En (right) would be 480 by 511
%                      but all are cropped (delete last row or col, as required)
%                      to 479 by 511 so that they are the SAME SIZE
%
% Use: [El,Em,En] = derivatives(E1,E2);

function [El,Em,En] = derivatives_based_on_first_differences(E1,E2);

[M,N] = size(E1);
[M2,N2] = size(E2);

if ((M2 ~= M) | (N2 ~= N))
  s=sprintf('derivatives.m: *** %g by %g NOT SAME SIZE as %g by %g. ***', ...
       M,N,M2,N2)
end%if

El = E2(1:M-1,1:N-1) - E1(1:M-1,1:N-1);                  % time derivative
Em = (diff(E1(:,1:N-1)) + diff(E2(:,1:N-1)))/2;          % down direction deriv
En = (diff(E1(1:M-1,:).').' + diff(E2(1:M-1,:).').')/2;  % across direction der

