find values in vector present in cell array

2 visualizzazioni (ultimi 30 giorni)
i have a cell array cA and vector V with values
cA = {[11,21,3;14,5,63], [11,22], [33;95;66;7]};
V = [14 22 33 66];
i wanted to find which all values in V are there in cA and its position
output = { [ 0 0 0 1 0 0], [1 2], [3 0 4 0] }

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 17 Mar 2020
Modificato: Andrei Bobrov il 17 Mar 2020
out = cell(size(cA));
for i = 1:numel(out)
x = cA{i}';
[~,out{i}] = ismember(x(:)',V);
end
or with cellfun
[~,out] = cellfun(@(x)ismember(reshape(x',1,[]),V),cA,'un',0);

Più risposte (1)

Ahmed Anas
Ahmed Anas il 17 Mar 2020
Dear, Always use matrix instead of cell arrays, working with matrix is really easy as compared to cell arrays. In the code below, i have split cA matrix into three small matrices and then checked the entities which are present in vector V. Afterwards compile the entire output matrix.
%%Splitting cA matrix into three consistent matrices
cA1 = [11,21,3;14,5,63]
cA2 = [11,22]
cA3 = [33;95;66;7]
V = [14 22 33 66];
%%Checking for entities of cA1
[Lia,Locb1] = ismember(cA1,V)
reshape(Locb1,1,[])
transpose(Locb1)
Locb1.'
Locb1(:)
Locb1=reshape(Locb1.',1,[])
%%Checking for entities of cA2
[Lia,Locb2] = ismember(cA2,V)
Locb2=reshape(Locb2,1,[])
%%Checking for entities of cA3
[Lia,Locb3] = ismember(cA3,V)
Locb3=reshape(Locb3,1,[])
Output=cell2mat({Locb1,Locb2,Locb3})
  2 Commenti
Elysi Cochin
Elysi Cochin il 17 Mar 2020
Modificato: Elysi Cochin il 17 Mar 2020
the dimension of cell array changes. so how to keep the code unaltered for any dimension
sometimes
cA = {[11,22,3;44], [14,22]};
V = [14 22 33 66];
output = { [ 0 2 0 0 ], [1 2] }
Ahmed Anas
Ahmed Anas il 17 Mar 2020
I am unable to understand [11 22 3;44] in cA = {[11,22,3;44], [14,22]};
Its dimensions should be consistent

Accedi per commentare.

Categorie

Scopri di più su Cell Arrays 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