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

    function setMap(obj, mapI)
%SETMAP  Set map in calibration.
%
%  SETMAP(CAL,MAP) sets the map MAP in the calibration CAL.
%
%  See also SETAXIS, SETVALUE, SETCURVE, 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!
mapIdentifierI = get(mapI, {'Identifier'});
xAxisIdentifierI = get(mapI, {'XAxisIdentifier'});
xAxisIdentifierIType = obj.pGetAxisIdentifierType(xAxisIdentifierI);
xAxisIdentifierI = xAxisIdentifierI(strcmp(xAxisIdentifierIType,'private')); % only private
yAxisIdentifierI = get(mapI, {'YAxisIdentifier'});
yAxisIdentifierIType = obj.pGetAxisIdentifierType(yAxisIdentifierI);
yAxisIdentifierI = yAxisIdentifierI(strcmp(yAxisIdentifierIType,'private')); % only private
axisIdentifiersI = unique([xAxisIdentifierI, yAxisIdentifierI]);
mapE = obj.getMap(mapIdentifierI);
xAxisIdentifierE = get(mapE, {'XAxisIdentifier'});
xAxisIdentifierEType = obj.pGetAxisIdentifierType(xAxisIdentifierE);
xAxisIdentifierE = xAxisIdentifierE(strcmp(xAxisIdentifierEType,'private')); % only private
yAxisIdentifierE = get(mapE, {'YAxisIdentifier'});
yAxisIdentifierEType = obj.pGetAxisIdentifierType(yAxisIdentifierE);
yAxisIdentifierE = yAxisIdentifierE(strcmp(yAxisIdentifierEType,'private')); % only private
axisIdentifiersE = unique([xAxisIdentifierE, yAxisIdentifierE]);

% 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 map
    pDoSetMap(obj, mapI);
    
    % Remove private axes
    pDoRemoveAxis(obj, axisIdentifiersToRemove);
    
catch ME
    
    % Clean up - remove added dependent axes
    pDoRemoveAxis(obj, axisIdentifiersToAdd);
    
    % Rethrow
    rethrow(ME)

end