how to automate the count of consecutive values in a cell array

1 view (last 30 days)
Hi! I have a cell array with this values
a={'2' '3' '4' '5'; '2' '2' '3' '1'; '2' '2' '2' '1';'1' '2' '3' '3'; '1' '2' '3' '4'};
a =
'2' '3' '4' '5'
'2' '2' '3' '1'
'2' '2' '2' '1'
'1' '2' '3' '3'
'1' '2' '3' '4'
and I want to count the number of consecutive values in the colums I consider the first two columns and I find the couples:
('2' '3'), ('2' '2') ('1' '2')
I want to find the number of times that this couples are presents in the first two colums
('2' '3') --> 1
('2' '2') --> 2
('1' '2') --> 2
After I consider the triple
('2' '3' '4'), ('2' '2' '3'), ('2' '2' '2'), ('1' '2' '3')
I want to find the number of times that this couples are presents in the first three columns:
('2' '3' '4')--> 1
('2' '2' '3')--> 1
('2' '2' '2')--> 1
('1' '2' '3')--> 2
After I consider the quadruple
('2' '3' '4' '5'), ('2' '2' '3' '1'), ('2' '2' '2' '1'), ('1' '2' '3' '3') ('1' '2' '3' '4')
I want to find the number of times that this couples are presents in the four columns:
('2' '3' '4' '5')--> 1
('2' '2' '3' '1')--> 1
('2' '2' '2' '1')--> 1
('1' '2' '3' '3')--> 1
('1' '2' '3' '4')--> 1
Can you help me?

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 30 Mar 2016
x={'2' '3' '4' '5'; '2' '2' '3' '1'; '2' '2' '2' '1';'1' '2' '3' '3'; '1' '2' '3' '4'};
[n,m]=size(x)
for k=2:m
a=x(:,1:k)
b=arrayfun(@(x) strjoin(a(x,1:k),'/'),(1:size(a,1))','un',0);
[ii,jj,kk]=unique(b,'stable');
out{k-1,1}=[a(jj,:) num2cell(accumarray(kk,1))];
end
out{1}
out{2}
out{3}

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!