www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@calibrationdata/@calibration/setCurve.m

    function setCurve(obj, curveI)
%SETCURVE  Set curve in calibration.
%
%  SETCURVE(CAL,CURVE) sets the curve CURVE in the calibration CAL.
%
%  See also SETAXIS, SETVALUE, SETMAP, SETITEM.

%  Copyright 2004-2008 The MathWorks, Inc.


% Get identifiers of inbound (I) and existing (E) referenced items; note
% that only private referenced items should be added or removed!
curveIdentifierI = get(curveI, {'Identifier'});
xAxisIdentifierI = get(curveI, {'XAxisIdentifier'});
xAxisIdentifierIType = obj.pGetAxisIdentifierType(xAxisIdentifierI);
xAxisIdentifierI = xAxisIdentifierI(strcmp(xAxisIdentifierIType,'private')); % only private
axisIdentifiersI = unique(xAxisIdentifierI);
curveE = obj.getCurve(curveIdentifierI);
xAxisIdentifierE = get(curveE, {'XAxisIdentifier'});
xAxisIdentifierEType = obj.pGetAxisIdentifierType(xAxisIdentifierE);
xAxisIdentifierE = xAxisIdentifierE(strcmp(xAxisIdentifierEType,'private')); % only private
axisIdentifiersE = unique(xAxisIdentifierE);

% Find existing private axis dependencies that will be removed
axisIdentifiersToRemove = setdiff(axisIdentifiersE, axisIdentifiersI);

% Find new private axis dependencies that will be added
axisIdentifiersToAdd = setdiff(axisIdentifiersI, axisIdentifiersE);
for c = 1:numel(axisIdentifiersToAdd),
    pDoAddAxis(obj, calibrationdata.axis('Identifier', axisIdentifiersToAdd{c}));
end

try
    
    % Add curve
    pDoSetCurve(obj, curveI);
    
    % Remove private axes
    pDoRemoveAxis(obj, axisIdentifiersToRemove);
    
catch ME
    
    % Clean up - remove added dependent axes
    pDoRemoveAxis(obj, axisIdentifiersToAdd);
    
    % Rethrow
    rethrow(ME)

end