count the number of transitions from 0 to 3 in cells in cell array
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Stephen23
2018 年 11 月 13 日
編集済み: Stephen23
2018 年 11 月 13 日
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 件のコメント
Stephen23
2018 年 11 月 13 日
>> 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
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!