Split a periodic matrix
Show older comments
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 Comment
Walter Roberson
on 1 Dec 2017
Perhaps find() the 0 crossings, diff() of those give the lengths of each stretch, which gives you the information you need to mat2cell() ?
Answers (1)
Andrei Bobrov
on 1 Dec 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});
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!