![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285996/image.png)
Data gap finding in a time series
7 次查看(过去 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
0 个评论
采纳的回答
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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285996/image.png)
2 个评论
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 Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!