www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@calibrationdata/@mbc2matinterface/pWrite.m
function pWrite(obj, calibration, filename) %PWRITE Private static method. % PWRITE writes a calibration to a MAT file. % % PWRITE(OBJ,CALIBRATION,FILENAME) % % See also COMMIT, PREAD. % Copyright 2000-2011 The MathWorks, Inc. narginchk(3,3); nargoutchk(0,0); % Do not write to empty if isempty(filename) return end pm = obj.ProgressManager; pm.reset; pm.notify('Performing startup tasks'); % Get identifiers valueIdentifiers = calibration.getValueIdentifiers; axisIdentifiers = calibration.getAxisIdentifiers; curveIdentifiers = calibration.getCurveIdentifiers; mapIdentifiers = calibration.getMapIdentifiers; % Store lengths for convenience nValues = numel(valueIdentifiers); nAxes = numel(axisIdentifiers); nCurves = numel(curveIdentifiers); nMaps = numel(mapIdentifiers); % Initialize dataStructure = struct; % Process values if nValues > 0 pm.notify(sprintf('Processing %d values', nValues)); for i = 1:nValues, % Retrieve thisValue = calibration.getValue(valueIdentifiers{i}); thisValueS.name = thisValue.Identifier; thisValueS.X.values = thisValue.Value; % Store dataStructure.(thisValueS.name) = thisValueS; pm.update(i/(nValues+nAxes+nCurves+nMaps)); end end % Process axes if nAxes > 0 pm.notify(sprintf('Processing %d axes', nAxes)); for i = 1:nAxes, % Retrieve (only public axes) thisAxis = calibration.getAxis(axisIdentifiers{i}); if strcmp(calibration.pGetAxisIdentifierType(thisAxis.Identifier),'public') % only public thisAxisS.name = thisAxis.Identifier; thisAxisS.X.values = transpose(thisAxis.Value); % column vector thisAxisS.Y.values = transpose(thisAxis.Index-1); % CAGE is 0-based, axis is 1-based % Store dataStructure.(thisAxisS.name) = thisAxisS; end pm.update((i+nValues)/(nValues+nAxes+nCurves+nMaps)); end end % Process curves if nCurves > 0 pm.notify(sprintf('Processing %d curves', nCurves)); for i = 1:nCurves, % Retrieve thisCurve = calibration.getCurve(curveIdentifiers{i}); thisXAxis = calibration.getAxis(thisCurve.XAxisIdentifier); thisCurveS.name = thisCurve.Identifier; thisCurveS.X.values = transpose(thisXAxis.Value); % column vector thisCurveS.Y.values = transpose(thisCurve.Value); % column vector % Store dataStructure.(thisCurveS.name) = thisCurveS; pm.update((i+nValues+nAxes)/(nValues+nAxes+nCurves+nMaps)); end end % Convert maps to structure if nMaps > 0 pm.notify(sprintf('Processing %d maps', nMaps)); for i = 1:nMaps, % Retrieve thisMap = calibration.getMap(mapIdentifiers{i}); thisXAxis = calibration.getAxis(thisMap.XAxisIdentifier); thisYAxis = calibration.getAxis(thisMap.YAxisIdentifier); thisMapS.name = thisMap.Identifier; thisMapS.X.values = thisXAxis.Value; thisMapS.Y.values = thisYAxis.Value; thisMapS.Z.values = thisMap.Value; % Store dataStructure.(thisMapS.name) = thisMapS; pm.update((i+nValues+nAxes+nCurves)/(nValues+nAxes+nCurves+nMaps)); end end % Save structure pm.notify('Writing file to disk'); matlabVersion = str2num(version('-release')); if matlabVersion < 14 save(filename, '-struct', 'dataStructure', '-mat'); else save(filename, '-struct', 'dataStructure', '-mat', '-v6'); end pm.update(1); pm.notify('Cleaning up');