How to count "gaps" consisting of designated values in a vector?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Al_G
el 18 de Dic. de 2018
Comentada: Matt J
el 8 de Jun. de 2021
I have a very long vector of data that includes gaps of "invalid" values where data that's missing has been replaced with a designated missing data value (e.g. -1) or with "NaN".
invalid_values = [-1 NaN];
sample_data_vector = [22 23 22 24 -1 -1 -1 25 20 24 NaN Nan NaN 25 24 -1 -1 22 20 NaN 23];
I want to summarize info on the length of the gaps of invalid data (and no need to distinguish between whether the value is Nan or -1 or some other number). It might be helpful to know that my goal is to compare gap lengths over subsequent trials to determine whether gaps are getting longer/shorter and more/less frequent.
So for the above sample vector I'd get a matrix output that summarizes the following info about the gaps:
Length: 1 Number of occurences: 1
Length: 2 Number of occurences: 1
Length: 3 Number of occurences: 2
How would I write code to do this?
0 comentarios
Respuesta aceptada
Matt J
el 18 de Dic. de 2018
Editada: Matt J
el 18 de Dic. de 2018
One way, assuming you have the Image Processing Toolbox,
bw=ismember(sample_data_vector, invalid_values)|isnan(sample_data_vector);
S=regionprops(bw,'Area');
gaplengths=[S.Area];
H = histcounts(gaplengths,1:max(gaplengths)+1) %output histogram
5 comentarios
Matt J
el 8 de Jun. de 2021
That will just be,
gap.start_indices = find( diff([0,bw])>0 );
gap.end_indices = find( diff([bw,0])<0 );
gap.length = gap.end_indices-gap.start_indices+1;
Más respuestas (0)
Ver también
Categorías
Más información sobre Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!