count the number of transitions from 0 to 3 in cells in cell array
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi.
I have a cell array containing 1000 cells. in each cell there is a matrix with different number of rows but with 50 columns.
the rows contains number from 0-3. I want to count how many times a 0 is followed by a 3 in each column.
Below you can see the code that I used to count the total number of transitions, from any number to another. Is there an easy way to change this code so that it counts the number of transitions from a certain number to another?
x=numel(CA)
newCA=cell(x,1);
for i=1:x
newCA{i}=sum(diff(CA{i})~=0);
end
0 Commenti
Risposta accettata
Stephen23
il 13 Nov 2018
Modificato: Stephen23
il 13 Nov 2018
Here is a simple method based on logcal arrays, demonstrated on two Nx4 matrices in a cell array. The first matrix has two 0,3 transitions, the second matrix has three.
>> C = {[0,1,2,3;0,3,0,3;0,2,0,1],[0,3,1,2;3,2,1,0;3,0,3,0;3,0,3,3]};
>> C{:}
ans =
0 1 2 3
0 3 0 3
0 2 0 1
ans =
0 3 1 2
3 2 1 0
3 0 3 0
3 0 3 3
>> F = @(m) nnz(m(:,1:end-1)==0 & m(:,2:end)==3);
>> V = cellfun(F,C)
V =
2 3
>> N = sum(V)
N = 5
3 Commenti
Stephen23
il 13 Nov 2018
>> C = {[0,0,0,0;3,1,2,0;0,0,3,1;3,3,0,1],[1,1,0,3;0,3,3,3;3,3,3,0]};
>> C{:}
ans =
0 0 0 0
3 1 2 0
0 0 3 1
3 3 0 1
ans =
1 1 0 3
0 3 3 3
3 3 3 0
>> F = @(m) sum(m(1:end-1,:)==0 & m(2:end,:)==3, 1);
>> D = cellfun(F,C,'uni',0);
>> M = vertcat(D{:}) % for each matrix
M =
2 1 0 0
1 0 1 0
>> sum(M,1) % for all matrices
ans =
3 1 1 0
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!