Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
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?

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 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}

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by