Data gap finding in a time series

11 次查看(过去 30 天)
Hello,
The attached file has two columns, time and levels. It has 6 missing data gaps. I want to find the index of each gap like this;
gap1 index 7-13
gap2 index 38-42
gap3 index 67-81
gap4 index 108-111
gap5 index 141-151
gap6 index 182-184
Your help is highly appreciated.
Thank you
Dash

采纳的回答

Adam Danz
Adam Danz 2020-4-20
Compute start and stop indices for NaN segments in height variable (column vector).
nanStartIdx = find(diff(isnan([0;height;0]))==1);
nanStopIdx = find(diff(isnan([0;height;0]))==-1);
Show the results.
% Show index of NaN values
ax = cla();
plot(isnan(height), '-k', 'LineWidth', 2)
ylim([-.2, 1.5])
xlabel('index')
ylabel('is NaN')
set(ax, 'YTick', [0,1], 'YTickLabel', {'False', 'True'})
hold on
arrayfun(@(start)xline(start, 'b-','Start'), nanStartIdx)
arrayfun(@(stop)xline(stop, 'c-','Stop'), nanStopIdx)
  2 个评论
Binu
Binu 2020-4-21
Thanks Adam. Much appreciated
Maria Battle
Maria Battle 2024-2-23
编辑:Maria Battle 2024-2-23
Good solution! If you wanted Stop to be aligned with the last NaN value of each gap, try
nanStopIdx = find(diff(isnan([0;height;0]))==-1)-1;

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by