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);