MATLAB: How to read in, compare and then delete data from a cellarray

filterMATLAB

Hi,
How do I filter cellarray A to only return the unique values (i.e. in this example A319, A320, A321) once, then compare these unique values against a structure, B, removing any rows from B which do not contain the unique values from A? Example below:
I'm looking for a general solution as the values contained in A can change. Structure B will not change but I have reduced the size of it for example purposes only.
>> A
A =
'A319'
'A319'
'A320'
'A320'
'A319'
'A320'
'A321'
'A320'
B = 'A306' 'A300B4-' 'non-metric' 'jet'
'A30B' 'A300B4-' 'non-metric' 'jet'
'A310' 'A310-20' 'non-metric' 'jet'
'A319' 'A319-13' 'non-metric' 'jet'
'A320' 'A320-21' 'non-metric' 'jet'
'A321' 'A321' 'non-metric' 'jet'
'A332' 'A330-24' 'non-metric' 'jet'
'A333' 'A330-30' 'non-metric' 'jet'
so B should return…
'A319' 'A319-13' 'non-metric' 'jet'
'A320' 'A320-21' 'non-metric' 'jet'
'A321' 'A321' 'non-metric' 'jet'
There are more columns (fields) in B, 101×15 to be exact.

Best Answer

Assuming that ‘A’ is an (8x1) cell and ‘B’ is a (8x4) cell, this will work for this example. This appears to be robust, since ismember returns all matches:
Lia = ismember(B(:,1), A);
C = B(Lia,:);