
Data gap finding in a time series
    7 views (last 30 days)
  
       Show older comments
    
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 Comments
Accepted Answer
  Adam Danz
    
      
 on 20 Apr 2020
        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 Comments
  Maria Battle
      
 on 23 Feb 2024
				
      Edited: Maria Battle
      
 on 23 Feb 2024
  
			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;
More Answers (0)
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!