Groupcount function sort data in alphabetical order
조회 수: 17 (최근 30일)
이전 댓글 표시
Dear MatLab users,
I have a cell array (attached) containing the IDs of my events. I used the groupcount function to see how many instances and how many events I had, and everything seemed to work fine. However, I just found out that the resulting variable containing the events sorted the data in alphabetical order. Thus, the counting also refers to the modified order, which is something I do not want. I managed to find the instances manually, but I also need the list in the original order. Is there a way to do using the groupcount function?
[ N , EVENTS ] = groupcounts(event_id); % EVENTS are in alphabetical order
댓글 수: 0
채택된 답변
Jan
2022년 6월 8일
편집: Jan
2022년 6월 8일
% groupcounts sorts the input:
C = {'C', 'C', 'C', 'A', 'A', 'E', 'E', 'E', 'E', 'B'}.';
[N, EVENTS] = groupcounts(C)
% Let N and EVENTS have the same order as in C:
[~, iC] = unique(C); % [EDITED, bug fixed]
[~, q] = sort(iC);
[sN, sEVENTS] = groupcounts(C);
N = sN(q)
EVENTS = sEVENTS(q)
If the equal keys are guaranteed to be neighboring:
% Call this instead of GROUPCOUNTS to keep the order
function [n, b] = RunLength_CStr(x)
x = x(:);
nx = numel(x);
d = [true; ~strcmp(x(1:nx-1), x(2:nx))]; % TRUE if values change
b = x(d); % Elements without repetitions
n = diff(find([d.', true])); % Number of repetitions
end
댓글 수: 4
Jan
2022년 6월 9일
There is no need for apologies. You are the only person who needs this function and I spend my time voluntarily to find solutions. Questions for clarifications are a standard part of solving problems.
I'm happy, if it is working now :-)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Time Series Events에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!