How to find out the maximum number of occurrences of the sequences inside the cell array beginning with particular digit?
2 次查看(过去 30 天)
显示 更早的评论
% Suppose I have a cellarray
C = {[1; 2; 3]; [2; 1; 3, 4]; [3; 1; 2]; [1; 2]}; % where any digit won't repeat in the individual cell.
% I was trying this code
for i = 1:3
for j = 1:3
for k = 1:3
if(i ~= j && i ~= k && j ~= k) % to prevent repetition
sequence_check = [i; j; k];
n = sum(cellfun(@(x) ~isempty(strfind(x.',sequence_check.')), C));
t = table(i, j, k, n)
end
end
end
end
% which gives me possible sequences (using 1,2 and 3) | number of occurrences
123 | 1
132 0
213 1
231 0
312 1
321 0
% I need to find out the maximum number of occurrences of the sequences inside the cell array beginning with 1 or 2 or 3 individually.
% Expected output:
123 | 1
213 1
312 1
0 个评论
采纳的回答
Andrei Bobrov
2018-11-19
C = {[1; 2; 3]; [2; 1; 3; 4]; [ 4; 2; 1; 3];[3; 1; 2]; [1; 2]};
a = perms(1:3);
[~,j2] = cellfun(@(x)ismember(a,x),C,'un',0);
B = cat(3,j2{:});
n = sum(all(diff(B,1,2) == 1,2) & B(:,1,:) > 0,3);
lo = n > 0;
out = [a(lo,:),n(lo)];
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!