How to check ismember in a cell in Matlab?

70 visualizzazioni (ultimi 30 giorni)
SM
SM il 24 Ott 2019
Risposto: SM il 24 Ott 2019
List={[5,2] [27,19] [13,8] [17,14] [3,13] [21,20] [6,16] [4,30] [1,13] [20,2] [14,27];
[5,2] [21,7] [29,6] [17,36] [35,12] [8,20] [35,8] [11,10] [35,23] [22,25] [9,32]};
B={[21 20]};
A=ismember(List{1,:}, B) % it will only check the row of the cell List.
result=[0 0 0 0 0 1 0 0 0 0 0]
is it possible?

Risposta accettata

Stephen23
Stephen23 il 24 Ott 2019
>> List = {[4,5,2],[27,19],[13,8],[17,14],[3,13],[21,20],[6,16],[4,30],[1,13],[20,2],[14,27,2];[5,2],[21,7],[29,6],[17,36],[35,12],[8,20],[35,8],[11,10],[35,23],[22,25],[9,32]};
>> B = {[21,20]}; % why the superfluous cell array?
>> X = cellfun(@(m)isequal(m,B{1}),List(1,:))
X =
0 0 0 0 0 1 0 0 0 0 0

Più risposte (2)

Andrei Bobrov
Andrei Bobrov il 24 Ott 2019
result = cellfun(@(x)all(x == B{:}),List);
  1 Commento
SM
SM il 24 Ott 2019
Excellent! But It must be only check the first row. Another issue is that if the first row is replaced by [4, 5,2] [27,19] [13,8] [17,14] [3,13] [21,20] [6,16] [4,30] [1,13] [20,2] [14,27,2]; then it shows error 'Matrix dimensions must agree'. Is it possible to solve now?

Accedi per commentare.


SM
SM il 24 Ott 2019
Thank you! It works.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by