www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xregmodel/checkdata.m

    function [x,y,varargout]= checkdata(m,X,Y,varargin)
%CHECKDATA transforms and checks data prior to fitting
%
% [x,y,DataOK]= checkdata(m,x,y);

%  Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc.

x = double(X);
y = double(Y);

if m.Output.HasTransform
    % Perform Y Transformation
    y = ytrans(m,y);
    % check that the inverse transform works for output data
    Yi = m.Output.doInverse(y);
    TransOK = abs(double(Y)-Yi)<sqrt(eps(double(Y)));
else
    y = double(Y);
    TransOK = true;
end
% Perform X Coding Transformation
x = code(m,x);

if ~isequal(size(x,1),size(y,1))
    error(message('mbc:xregmodel:InvalidArgument'))
end
% reject nonfinite data and data where the inverse function doesn't work
DataOK= isfinite(y) & all(isfinite(x),2) & TransOK;
% remove complex data if introduced by transformations
if ~isreal(y) || ~isreal(x);
   isRealData = isInsignificantImaginaryPart(y) & all(isInsignificantImaginaryPart(x),2); 
   y= real(y);
   x= real(x);
   DataOK = DataOK & isRealData;
end

x=x(DataOK,:);
y=y(DataOK);
if nargin>3
	varargout= [varargin {DataOK}];
else
	varargout{1}= DataOK;
end
	
function result = isInsignificantImaginaryPart(val)
result = abs(imag(val)<sqrt(eps(val)));