Alex Rivera | Logout

Finding and filtering elements in a MATLAB cell array

Asked 2010-08-11T19:30:00.313
9

I have a list (cell array) of elements with structs like this:

mystruct = struct('x', 'foo', 'y', 'bar', 's', struct('text', 'Pickabo'));
mylist = {mystruct <more similar struct elements here>};

Now I would like to filter mylist for all structs from which s.text == 'Pickaboo' or some other predefined string. What is the best way to achieve this in MATLAB? Obviously this is easy for arrays, but what is the best way to do this for cells?

Edit
Report

1 Answer

2

Use cellfun.

mystruct = struct('x', 'foo', 'y', 'bar', 's', struct('text', 'Pickabo'));
mystruct1 = struct('x', 'foo1', 'y', 'bar1', 's', struct('text', 'Pickabo'));
mystruct2 = struct('x', 'foo2', 'y', 'bar2', 's', struct('text', 'Pickabo1'));

mylist = {mystruct, mystruct1, mystruct2 };

string_of_interest = 'Pickabo'; %# define your string of interest here
mylist_index_of_interest = cellfun(@(x) strcmp(x.s.text,string_of_interest), mylist ); %# find the indices of the struct of interest
mylist_of_interest = mylist( mylist_index_of_interest ); %# create a new list containing only the the structs of interest
answered 2010-08-11T19:45:35.703

Your Answer