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

1 view (last 30 days)
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, 101x15 to be exact.

Accepted Answer

Star Strider
Star Strider on 3 Sep 2015
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,:);
  2 Comments
J
J on 4 Sep 2015
Edited: J on 4 Sep 2015
Fantastic! The only thing I've changed is to make it work for a structure instead of a cellarray (as B is a structure)
Lia = ismember(B(:,1), A);
B = B(Lia);

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!