![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285996/image.png)
Data gap finding in a time series
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Adam Danz
le 20 Avr 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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/285996/image.png)
2 commentaires
Maria Battle
le 23 Fév 2024
Modifié(e) : Maria Battle
le 23 Fév 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;
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!