MATLAB: Count number of unique values in column one, for each unique value in column 2

accumarraycellfunhistunique

I've been faced with a problem that is giving me lots of trouble. I need to calculate the number of unique records in one column for each unique record in the second column. For example: If I have
Activities = {'walk', 'monday'; 'walk', 'monday'; 'eat', 'monday'; 'TV', 'tuesday'; 'run','wednesday'; 'eat', 'wednesday';...}
'call', 'Thursday';'work', 'Thursday'; 'call', 'Thursday';'work', 'Thursday';'sleep','Thursday'}
What I'd like in another column is the total number of unique activies for each unique day, formatted like "Result".
Result = [2;2;2;1;2;2;3;3;3;3;3]

Best Answer

Expanding on Andrei Bobrov’s Answer to a related Question:
[~,~,ic1] = unique(Activities(:,1), 'stable'); % Unique Activities
[~,~,ic2] = unique(Activities(:,2), 'stable'); % Unique Days
H = accumarray([ic1 ic2], 1); % Histogram
LH = sum(H > 0); % Sum Logical Array
SH = sum(H); % Sum Event Array
Result = [];
for k1 = 1:length(LH)
Result = [Result; repmat(LH(k1), SH(k1), 1)]; % Create ‘Result’ Vector
end