www.gusucode.com > nnet 工具箱 matlab 源码程序 > nnet/nnprocess/+mapminmax/create.m

    function [y,settings] = create(x,param)
%MAPMINMAX.CREATE Create settings for processing values

% Copyright 2012-2015 The MathWorks, Inc.

  % Get info from X which may be MATLAB array or gpuArray
  xrows = size(x,1);
  if isempty(x)
    xmin = nan(xrows,1);
    xmax = nan(xrows,1);
  else
    xmin = nnet.array.safeGather(min(x,[],2));
    xmax = nnet.array.safeGather(max(x,[],2));
  end
  
  % xmin and xmax will be [-inf inf] for unknown ranges
  xmin(isnan(xmin)) = -inf;
  xmax(isnan(xmax)) = inf;

  settings.name = 'mapminmax';
  settings.xrows = xrows;
  settings.xmax = xmax;
  settings.xmin = xmin;
  settings.xrange = xmax - xmin;
  settings.yrows = settings.xrows;
  settings.ymax = param.ymax;
  settings.ymin = param.ymin;
  settings.yrange = settings.ymax - settings.ymin;

  % Convert from settings values to safe processing values
  xoffset = settings.xmin;
  gain = settings.yrange ./ settings.xrange;
  fix = find((abs(gain)>1e14) | ~isfinite(settings.xrange) | (settings.xrange == 0));
  gain(fix) = 1;
  xoffset(fix) = settings.ymin;
  settings.gain = gain;
  settings.xoffset = xoffset;

  % Check whether processing has any effect
  settings.no_change = (settings.xrows == 0) || ...
    (all(gain == 1) && all(xmin == 0));

  % Apply
  y = mapminmax.apply(x,settings);
end