特定の文字列を含むセ​ルのインデックスを見​つけるにはどうしたら​よいですか?

18 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 13 Nov 2024 at 0:00
Answered: MathWorks Support Team on 13 Nov 2024 at 4:24

40,000x1のセル配列があり、各セルには文字列が含まれています。特定の文字列を含むセルのインデックスを見つけたいです。以下のように試しましたが:

Index = strfind(Mycellarray, 'Bla');
次のエラーが発生します:

Error using ==> cell.strfind at 35 If any of the input arguments are cell arrays, the first must be a cell array of strings and the second must be a character array.
何が間違っているのでしょうか?ヘルプファイルでは、strfindはセル配列とパターンを受け入れるとあります。 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 13 Nov 2024 at 0:00
セル配列内の各要素のテキストに「bla」が含まれているかを検索したいのか、それとも要素が正確に「bla」であるものを探したいのかによって、答えが異なります。この詳細を説明していただけると、質問への回答が容易になります。
テキストの一部として「bla」を検索している場合、R2016b以降では「contains」関数を使用できます。
Index = find(contains(Mycellarray, 'bla'));
「contains」関数は論理配列を返します。この論理インデックスを使用することで、多くのワークフローを効率化できます。論理配列の使用については、以下のドキュメントを参照してください。
R2016b以前のバージョンのMATLABでは、「strfind」関数を使用できます。ただし、「strfind」はインデックスのセル配列を返します。入力セルのテキストに「bla」が含まれていない場合、「strfind」は空のセルを返します。「isempty」と「cellfun」を「find」関数と組み合わせて、空でないセルを見つけます。
IndexC = strfind(Mycellarray, 'bla'); Index = find(not(cellfun('isempty', IndexC)));
テキストが正確に「bla」であるものを検索している場合は、Josの回答を参照してください。 

More Answers (0)

Categories

Find more on ビッグ データの処理 in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!