Azzera filtri
Azzera filtri

how to find cell array intersection

8 visualizzazioni (ultimi 30 giorni)
Shivik Garg
Shivik Garg il 12 Set 2017
Risposto: Walter Roberson il 12 Set 2017
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 Commento
James Tursa
James Tursa il 12 Set 2017
Please provide a small example showing the input and desired output, giving a clear description of the complete rules involved for getting the output.

Accedi per commentare.

Risposte (1)

Walter Roberson
Walter Roberson il 12 Set 2017
[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.

Categorie

Scopri di più su Operating on Diagonal Matrices 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!

Translated by