2011-07-26 17 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