function d = mydpf(code,e,x,perf,pp)
%MYDPF Example custom performance derivative function for MYPF.
%
%  Use this function as a template to write your own function.
%  
%  This function is obselete.
%  Use TEMPLATE_PERFORMANCE to design your function.

nntobsf('mydpf','Use TEMPLATE_PERFORMANCE to design your function.')

%  Use this function as a template to write your own function.
%  
%  Syntax
%
%    dPerf_dE = mydpf('e',E,X,perf,PP)
%    dPerf_dX = mydpf('x',E,X,perf,PP)
%      E  - Cell array of error vector(s).
%      X  - Vector of all weight and bias values.
%      PP - Performance parameters.
%      dPerf_dE - Cell array of derivative of performance dPerf/dE.
%      dPerf_dX - Derivative of performance dPerf/dX.
%
%  Example
%
%    e = {rand(4,5)};
%    x = rand(12,1);
%    pp = mypf('pdefaults')
%    perf = mypf(e,x,pp)
%    dperf_de = mydpf('e',e,x,perf,pp)
%    dperf_dx = mydpf('x',e,x,perf,pp)

% Copyright 1997-2005 The MathWorks, Inc.
% $Revision: 1.1.6.2 $

if nargin < 5, error('Not enough input argument.'), end

switch (code)
case 'e'

% ** Replace this code with your own calculation of dPerf/dE.

  [rows,cols] = size(e);
  d = cell(rows,cols);
  
  totalRows = 0;
  for i=1:rows, totalRows = totalRows + size(e{i,1},1); end
  totalCols = 0;
  for j=1:cols, totalCols = totalCols + size(e{1,i},2); end
  numErrors = totalRows*totalCols;
  
  for i=1:rows
    for j=1:cols
    d{i,j} = sign(e{i,j}) * 1/numErrors;
  end
  end
  
case 'x'

% ** Replace this code with your own calculation of dPerf/dX.

  numWeightsBiases = length(x);
  d = sign(x) * 1/numWeightsBiases;
end
