find values in vector present in cell array

2 visualizaciones (últimos 30 días)
Elysi Cochin
Elysi Cochin el 17 de Mzo. de 2020
Editada: Andrei Bobrov el 17 de Mzo. de 2020
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] }

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 17 de Mzo. de 2020
Editada: Andrei Bobrov el 17 de Mzo. de 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);

Más respuestas (1)

Ahmed Anas
Ahmed Anas el 17 de Mzo. de 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 comentarios
Elysi Cochin
Elysi Cochin el 17 de Mzo. de 2020
Editada: Elysi Cochin el 17 de Mzo. de 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 el 17 de Mzo. de 2020
I am unable to understand [11 22 3;44] in cA = {[11,22,3;44], [14,22]};
Its dimensions should be consistent

Iniciar sesión para comentar.

Categorías

Más información sobre Cell Arrays en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by