how to find cell array intersection
6 次查看(过去 30 天)
显示 更早的评论
i have cell array
y [1x4] [1x5] [1x6]
if have to find out common elements among
y{1}&y{2} y{1}& y{3} y{2}&y{3]
how can I use the intersect function to do it
1 个评论
James Tursa
2017-9-12
Please provide a small example showing the input and desired output, giving a clear description of the complete rules involved for getting the output.
回答(1 个)
Walter Roberson
2017-9-12
[I, J] = ndgrid(1:length(y));
result = arrayfun(@(tI,tJ) intersect(y{tI}, y{tJ}), I, J 'uniform', 0);
The result will be a symmetric cell array. Each pair would have been evaluated twice. Depending on the size of the array, avoiding the double evaluation could end up slower.
leny = length(y);
result = cell(leny-1, leny-1);
for J = 1 : leny - 1
for K = J+1 : leny
result{J,K-1} = intersect(y{J}, y{K});
end
end
This will give a cell array of results with the diagonal deleted and the entries below the diagonal left empty.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!