Search a cell array of structs

3 visualizaciones (últimos 30 días)
Ben
Ben el 24 de Jun. de 2014
Comentada: Ben el 1 de Jul. de 2014
I have a large one-dimensional cell array of structs. All the structs have the same format (i.e. same fields in the same order). I would like to search for a particular value in a struct field. E.g. say one of the fields is 'name'. I would like to be able to search the cell array and get back indices of all cells which contain a struct where the 'name' field contains 'sally'. Is there a straight-forward way to do this?

Respuesta aceptada

per isakson
per isakson el 24 de Jun. de 2014
Editada: per isakson el 24 de Jun. de 2014
Try
cac{1} = struct( 'name', 'val1' );
cac{2} = struct( 'name', 'val2' );
cac{3} = struct( 'name', 'val3' );
cac{4} = struct( 'name', 'sally' );
strcmp( cellfun( @(sas) sas.name, cac, 'uni', false ), {'sally'} )
which returns
ans =
0 0 0 1
Straight-forward - maybe not.
  5 comentarios
per isakson
per isakson el 29 de Jun. de 2014
Yes, 'uni' is a valid shortening of 'UniformOutput'
@(sas) sas.name is the definition of a anonymous function and sas is just an argument.
Ben
Ben el 1 de Jul. de 2014
I've run across a problem using this idea. It works fine in the if statement, but throws an error in the loop. I put a break at line 8, and if I hover over "restaurants", Matlab knows it's a cell array of structs, just like "reviews" is. Any ideas on why I'm getting this error?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by