I know that some similar questions have previously been asked, but I think this problem might be a little unique. For some context, I have this vector V whose values never decrease (is there a word for this?) and whose min (1) and max (5) I always know.:
V = [1;1;2;2;2;2;3;4;4;5];
I'd like to somehow get the vertices for each "grouping" g (or some other format of distinction such as indexing) of V for like-numbers, i.e.
g1 = [1;1] g2 = [2;2;2;2]; g3 = 3; g4 = [4;4]; g5 = 5;
What I have right now seems ad hoc and mendable and I am not sure if it will be ideal for large data sets that I intend to apply this toward. I imagine an easier solution would simply obtain indices for each grouping. This is what I've done:
Vchange = logical(diff(V)); maxG = 5; % For this case.
Gidx = 1; % Begin first grouping with minimum.
G = cell(maxG,1); % Initialize output.
G{1} = V(1); iter = length(Vchange); % Number of iterations.
for Vidx = 1:iter if Vchange(i) % Vertex has changed;
Gidx = Gidx + 1; % continue with next vertex.
end G{Gidx} = [G{Gidx},V(i)]; end
Best Answer