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

1 回表示 (過去 30 日間)
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.
  1 件のコメント
Rik
Rik 2018 年 1 月 15 日
Is that the only requirement? If so, you can simply use isnan and a bit of code.

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2018 年 1 月 15 日
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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangePolar Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by