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

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

% Copyright 2012-2015 The MathWorks, Inc.

  % Get info from X which may be MATLAB array or gpuArray
  R = size(x,1);
  settings.max_range = param.max_range;
  settings.keep = 1:R;
  if isempty(x)
    minx=nan(size(x,1),1);
    maxx=nan(size(x,1),1);
  else
    minx = nnet.array.safeGather(min(x,[],2));
    maxx = nnet.array.safeGather(max(x,[],2));
  end
  rangex = (maxx - minx);
  midx = (maxx + minx) / 2;
  rowsWithRangesTooSmall = (rangex <= settings.max_range)';
  settings.remove = find(rowsWithRangesTooSmall);
  settings.keep(settings.remove) = [];
  settings.value = midx(settings.remove,:);
  settings.xrows = R;
  settings.yrows = settings.xrows - length(settings.remove);
  settings.constants = settings.value;
  
  % Check whether processing has any effect
  settings.no_change = isempty(settings.remove);

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