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)));