www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@modeldev/getdata.m

    function [X,Y]=getdata(MD,var,RemOutliers)
%GETDATA Get data used by node
%
%  [X Y] = GETDATA(MDEV, VAR, REMOVE_OUTLIERS)
%      var is 'X','Y','DATA','VAL','FIT', 'ALLDATA
%  Copyright 2000-2011 The MathWorks, Inc. and Ford Global Technologies, Inc.


if nargin<3
    RemOutliers=1;
end

X= i_GetData(MD.X);
if RemOutliers
    Y= i_GetData(MD.Y,outliers(MD));
else
    Y= i_GetData(MD.Y);
end

if nargin>1
    switch upper(var)
        case 'Y'
            X=Y;
        case 'X'
        case 'DATA'
            X=i_GetData(MD.Data,outliers(MD));
        case 'VAL'
            [X,Y]= valdata(MD);
        case 'FIT'
            TP= mdevtestplan(MD);
            [X,YG]= getdata(TP,'X',0);
            if ~iscell(X)
                % make X data a cell array for consitency with twostage
                X={X};
            end
        case 'ALLDATA'
            TP= mdevtestplan(MD);
            X= DataLink(TP);
            if RemOutliers
                X(outliers(MD),:)= NaN;
            end
        otherwise
            error(message('mbc:modeldev:InvalidArgument9'))
    end
end



function Data= i_GetData(p,Outliers)

switch class(p)
    case 'xregpointer'
        if length(p)>1
            Data= infoarray(p);
            for i=1:length(p)
                Data{i}= sweepset(Data{i});
            end
        else
            Data= sweepset(info(p));
        end
    case 'sweepsetfilter'
        Data= sweepset(p);
    case 'struct'
        Data= p.ptr.info(:,p.index);
    case {'double','sweepset'}
        Data= p;
    otherwise
        error(message('mbc:modeldev:InvalidArgument10'))
end
if nargin > 1
    Data(Outliers,:)=NaN;
end