Split a periodic matrix
Afficher commentaires plus anciens
I have a 200 cycles of matrix data where a value changes from -1, reaches a maximum of 7 and drops to 1. Then again it drops to -7 and reaches to -1. How do I capture these two individual positive and negative peaks repeating over 200 cycles.
1 commentaire
Walter Roberson
le 1 Déc 2017
Perhaps find() the 0 crossings, diff() of those give the lengths of each stretch, which gives you the information you need to mat2cell() ?
Réponses (1)
Andrei Bobrov
le 1 Déc 2017
[v0,i0] = findpeaks(-x(:));
[v,ii] = findpeaks(x(:));
a = zeros(numel(x),1);
a([i0,ii]) = 1;
[v1,i1] = ismembertol(x,[-1 ; 1],.2,'DataScale',1);
Groups = cumsum(v1 & a);
out = accumarray(Groups,x(:),[],@(x){x});
1 commentaire
AT
le 1 Déc 2017
Catégories
En savoir plus sur Descriptive Statistics dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!