MATLAB: How to split data into several segments so that in each segment, the number of NaN is not more than a certain value.

divide datasegment

I have a large data which contains around 6,500,000+ data points. I need to split/divide my data into several segments so that in each segment, the number of consecutive NaN is not more than 18,000. What should I try? Thanks.

Best Answer

Try this (just off the top of my head):
data = rand(1, 6500000);
segmentLength = 1000000; % Whatever...

nansPerSegment = 30000; % Whatever...
for k = 1 : segmentLength : length(data)
lastIndex = min(length(data), k + segmentLength - 1);
thisData = data(k:lastIndex);
numElements = numel(thisData);
nanLocations = k + randperm(numElements, nansPerSegment) - 1;
data(nanLocations) = nan;
end