开发者

Searching cell array with regex

开发者 https://www.devze.com 2023-03-23 09:08 出处:网络
I often find myself trying to search cell arrays like I would want to search a database with a sql query. In this case, I\'ve got a number of military bases (bases.shp)

I often find myself trying to search cell arrays like I would want to search a database with a sql query. In this case, I've got a number of military bases (bases.shp)

bases = shap开发者_JS百科eread('us-military-bases.shp')

and then I want to filter down the shape file to get Air Force bases, something like regexp({bases.FAC_NAME}','Air Force'). But the output I get is the fairly cumbersome:

[]
[]
[ 4]
[]
[]
[ 9]
[]

I am sure filtering down cell arrays or shapefiles is pretty common and there have to be some good practices. Thanks for any insight.

I am also trying things like:

trif = arrayfun(@(x)regexp(x.FAC_NAME,'Griff','match'),af_bases)


Given the output of regexp you can index back into the original cell array just by checking if each item in the resultant cell array is empty. You can do this using cellfun to apply a function to each cell.

To get an array of logicals, for non-empty items you can do:

base_strings = {bases.FAC_NAME}';

ind = ~cellfun(@isempty, regexp(base_strings, 'Air Force'))

Or more cleanly using an anonymous function:

ind = cellfun(@(x)( ~isempty(x) ), regexp(base_strings, 'Air Force'))

Then, to filter:

filtered = base_strings(ind);
0

精彩评论

暂无评论...
验证码 换一张
取 消