find values in vector present in cell array
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Elysi Cochin
il 17 Mar 2020
Modificato: Andrei Bobrov
il 17 Mar 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] }
0 Commenti
Risposta accettata
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);
0 Commenti
Più risposte (1)
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
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
Vedere anche
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!