Efficient method of searching cell array for multiple, partial (non exact) strings

7 ビュー (過去 30 日間)
Matt C
Matt C 2016 年 9 月 1 日
編集済み: Azzi Abdelmalek 2016 年 9 月 1 日
Hello, internet!
I'm looking for the most efficient way to look through a cell array to match partial strings. I know I can bound things in a loop, but there has to be a more efficient method of doing this.
Given the following:
MasterList = {'dog' 'house' 'hotdog' 'cat' 'house music' 'banana' 'that actor from the 80s'};
SearchFor = {'dog' 'house' 'actor'};
I would like a search algorithm to return:
LogicalArrayX = 1 1 1 0 1 0 1
I know that partialLogicalArrayX = strfind(MasterList,SearchFor{i}) will return the character indices of MasterList when searching for SearchFor{i}, but I'd like it to return a logical matrix and be able to batch-process SearchFor instead of having to loop around the i variable.
Thanks!

回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 9 月 1 日
編集済み: Azzi Abdelmalek 2016 年 9 月 1 日
edit
MasterList = {'dog' 'house' 'hotdog' 'cat' 'house music' 'banana' 'that actor from the 80s'};
SearchFor = {'dog' 'house' 'actor'};
LogicalArrayX=logical(~cellfun(@isempty,regexp(MasterList,'dog|house|actor','once')))
  2 件のコメント
Matt C
Matt C 2016 年 9 月 1 日
Thanks, Azzi. Is there a way to extend this so that you aren't manually entering 'dog|house|actor'? This was my simplified problem - my real problem has a MasterList that is tens of 1000s of items long, and my SearchFor uses something that is 1000s of items long. Computational speed is also critical for my application, and I have seen on some threads that regexp operates fairly slowly.
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 9 月 1 日
編集済み: Azzi Abdelmalek 2016 年 9 月 1 日
MasterList = {'dog' 'house' 'hotdog' 'cat' 'house music' 'banana' 'that actor from the 80s'};
SearchFor = {'dog' 'house' 'actor'};
patern= strjoin(SearchFor,'|')
LogicalArrayX=logical(~cellfun(@isempty,regexp(MasterList,patern,'once')))

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeClocks and Timers についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by