我经常发现自己试图搜索单元格数组,就像我想用sql查询搜索数据库一样。在这种情况下,我有一些军事基地(bases.shp)
bases = shaperead('us-military-bases.shp')
然后我想过滤掉形状文件以获得空军基地,比如regexp({bases.FAC_NAME}','Air Force')
。但我得到的输出相当麻烦:
[]
[]
[ 4]
[]
[]
[ 9]
[]
我确信过滤单元格数组或shapefile很常见,必须有一些好的做法。感谢您的任何见解。
我也在尝试这样的事情:
trif = arrayfun(@(x)regexp(x.FAC_NAME,'Griff','match'),af_bases)
答案 0 :(得分:15)
给定regexp
的输出,只需检查结果单元格数组中的每个项目是否为空,就可以索引回原始单元格数组。您可以使用cellfun
将功能应用于每个单元格。
要获得一系列逻辑,您可以执行以下非空项:
base_strings = {bases.FAC_NAME}';
ind = ~cellfun(@isempty, regexp(base_strings, 'Air Force'))
或者更干净地使用匿名函数:
ind = cellfun(@(x)( ~isempty(x) ), regexp(base_strings, 'Air Force'))
然后,过滤:
filtered = base_strings(ind);