3

cellfun関数の関数を使用strfindして、文字列の別のセル配列内の文字列のセル配列内の各文字列のインデックスを見つけて、それらを除外したいと考えています。

strings = {'aaa','bbb','ccc','ddd','eee','fff','ggg','hhh','iii','jjj'};
excludedStrings = {'b','g','h'};
idx = cellfun('strfind',strings,excludedStrings);
idx = cell2mat = idx;
idx = reshap(idx,numel(idx),1);
idx = unique(idx);
strings(cell2mat(idx)) = [];

コール ラインにエラーがありますcellfun。これを修正するにはどうすればよいですか?

4

2 に答える 2

3

これが素敵なワンライナーです:

strings = regexprep(strings, excludedStrings, '');

壊す:

  • 検索するすべての単語/文字はに渡されますregexprep
  • この関数は、上記のセット内のすべての単語/文字を空の文字列()に置き換えます''

セル配列内のすべての要素に対してこのアクションが自動的に繰り返されますstring

セルから空の文字列も削除する場合はstring、上記のコマンドの後にこれを実行します。

strings = strings(~cellfun('isempty', strings));
于 2012-11-08T12:55:09.687 に答える
2

私はあなたがこの後だと思います:

idx = cellfun(@(str) any(cellfun(@(pat) any(strfind(str,pat)),excludedStrings)),strings)

idx =
    0     1     0     0     0     0     1     1     0     0

その後、もちろん適用できます:

strings(idx) = [];

クロスチェックする 2 つの cell 配列 (そのうちの 1 つは配列) があるため、2 つの を入れ子にする必要がありますcellfun

于 2012-11-08T13:28:47.093 に答える