MATLAB: Comparing columns of cell arrays

cell arrayscomparefield

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 (28722×1) and my second field(drug.enzymes) contains one column of IDs 877×1. 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

Best Answer

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.