Puzzler: Count unique nonzero periods in a timeseries without a for loop

1 vue (au cours des 30 derniers jours)
given: a signal as a time series
return: discrete number of times is is holds a nonzero position
For example:
given: [0,1,0.5,0.7,0,1]
return: 2
given: [0,1,0,0,0,.3,1,0,0,1]
return: 3
given: [0,1]
return: 1
is there a way to do this task in a vector manner as opposed to a for loop that counts nonzero periods as it encounters them and flicks a counter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 19 Juil 2016
Modifié(e) : Azzi Abdelmalek le 19 Juil 2016
a=[0,1,0,0,0,.3,1,0,0,1]
out=numel(strfind([0 logical(a)],[0 1]))

Plus de réponses (1)

Image Analyst
Image Analyst le 19 Juil 2016
Yes
[~, numRegions] = bwlabel(yourVector ~= 0);
  1 commentaire
Will Kinsman
Will Kinsman le 19 Juil 2016
sorry dont have imaging processing toolbox. but damn. nice solution.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Just for fun 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!

Translated by