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

    function [newSS, newRecordIndex] = addRecord(SS, sweepIndex)
%ADDRECORD Add a record to the data
%
%  [SS, DATAINDEX] = ADDRECORD(SS, INDEX) adds a new record at each of the
%  indices INDEX.  The indices of the new data points are returned in
%  DATAINDEX.

%  Copyright 2000-2007 The MathWorks, Inc. and Ford Global Technologies, Inc.


newSS = SS;
if islogical(sweepIndex)
	sweepIndex = find(sweepIndex);
else
	sweepIndex = unique(sweepIndex);
end

recsToAdd = length(sweepIndex);

oldSizes = tsizes(SS);

% Find the indices of the last point in each sweep
sweepEnd   = tstart(SS) + oldSizes - 1;

% Create the record to Add
recordsToAdd = NaN*ones(recsToAdd, numDataVariables(SS));

% Generate the new data and baddata
newSS.data = zeros(numRecords(newSS), numDataVariables(newSS));
newSS.baddata = sparse(zeros(numRecords(newSS), numDataVariables(newSS)));
newSS.guid = guidarray(numRecords(newSS));

lOldData = true(1, numRecords(newSS));
newRecordIndex = sweepEnd(sweepIndex) + (1:recsToAdd);
lOldData(newRecordIndex) = 0;

% Copy the new data
newSS.data(~lOldData, :)    = recordsToAdd;
newSS.baddata(~lOldData, :) = recordsToAdd;
newSS.guid(~lOldData)       = guidarray(recsToAdd);

% Copy the old data
newSS.data(lOldData, :)     = SS.data;
newSS.baddata(lOldData, :)  = SS.baddata;
newSS.guid(lOldData)        = SS.guid;

% Update the underlying xregdataset
newSizes = oldSizes;
newSizes(sweepIndex) = newSizes(sweepIndex) + 1;
newSS.xregdataset = xregdataset(testnum(SS), type(SS), newSizes);