2011-07-26 6 views
3

나는 종종 SQL 쿼리로 데이터베이스를 검색하려고하는 것처럼 셀 배열을 검색하려고합니다. 이 경우, 나는 군사 기지 (bases.shp)정규식을 사용하여 셀 배열 검색

bases = shaperead('us-military-bases.shp')

다음 나는 공군 기지, regexp({bases.FAC_NAME}','Air Force') 같은 것을 얻을 수있는 형태의 파일을 필터링 할의 번호를 가지고있다. 하지만 얻을 출력은 상당히 복잡 :

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

확실 필터링 아래 셀 어레이 또는 모양 파일이 꽤 일반적이다이고 좋은 사례가있을 수 있습니다. 어떤 통찰력에도 감사드립니다. 그냥 결과 셀 어레이의 각 항목이 비어있는 경우 확인하여 원래의 세포 배열 인덱스 할 수 regexp의 출력을 감안할 때

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

답변

15

:

은 또한 같은 일을 시도하고있다. 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); 
+1

우수. 매우 도움이됩니다. – bonhoffer