comparing columns of cell arrays

Hi,
I am new to matlab and would like to compare two cell arrays of a structure which have a different size.
My first field (drug.compound) of the structure (named drug) contains one column of IDs (28722x1) and my second field(drug.enzymes) contains one column of IDs 877x1. I would like to make a table in which the relation is shown between the IDs [28772×857] by a logical array.
Any suggestions?
I tried the strcmp function and == operator but not seem to work

2 Commenti

Stephen23
Stephen23 il 8 Feb 2019
Modificato: Stephen23 il 8 Feb 2019
@Bouchra Ezzamouri: please describe the contents of the cell arrays: are they numeric arrays, or character vectors, or string arrays, or ... ? If you are not sure, please run these commands:
class(drug.compound{1})
class(drug.enzymes{1})
and tell us their outputs. It would be easiest if you simply uploaded the structure in a .mat file, by clicking the paperclip button.
the output is character vectors

Accedi per commentare.

 Risposta accettata

Stephen23
Stephen23 il 8 Feb 2019
Modificato: Stephen23 il 8 Feb 2019

0 voti

As most of the data seem to be numeric encoded as character vectors, then we can easily convert them from char to numeric arrays and use an efficient logical comparison:
>> Nc = str2double(drugb.compounds(:));
>> Ne = str2double(drugb.enzymes(:)).';
>> X = bsxfun(@eq,Nc,Ne);
>> size(X)
ans =
28772 1745
Some of the character vectors contain things like
"# Tanaka T, Tachibana H, Nonaka G, Nishioka I, Hsu FL, Kohda H, Tanaka O: Tannins and related compounds. CXXII. New dimeric, trimeric and tetrameric ellagitannins, lambertianins A-D, from Rubus lambertianus Seringe. Chem Pharm Bull (Tokyo). 1993 Jul;41(7):1214-20. ""Pubmed"":http://www.ncbi.nlm.nih.gov/pubmed/8374992 [Isolation]"
which will be converted to NaN and will therefore return false from the logical comparison.

Più risposte (1)

Categorie

Scopri di più su Programming in Centro assistenza e File Exchange

Richiesto:

il 8 Feb 2019

Risposto:

il 8 Feb 2019

Community Treasure Hunt

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

Start Hunting!

Translated by