107

セル配列があるとしましょう

strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}

のインデックスを見つけたい場合はどうすればよい'KU'ですか?

4

8 に答える 8

90
>> strs = {'HA' 'KU' 'LA' 'MA' 'TATA'};
>> tic; ind=find(ismember(strs,'KU')); toc

経過時間は 0.001976 秒です。

>> tic; find(strcmp('KU', strs)); toc

経過時間は 0.000014 秒です。

SO、明らかにstrcmp('KU', strs)時間がかかるよりもはるかに短いismember(strs,'KU')

于 2013-09-06T04:22:51.613 に答える
40

2011a 以降、推奨される方法は次のとおりです。

booleanIndex = strcmp('KU', strs)

整数インデックスを取得したい場合 (多くの場合必要ありません)、次を使用できます。

integerIndex = find(booleanIndex);

strfindは推奨されていないため、使用しないようにしてください。

于 2012-02-24T15:50:26.430 に答える
25

誰もがあなたのコードの最も重要な欠陥を見逃しているようです:

strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}

次のようにする必要があります。

strs = {'HA' 'KU' 'NA' 'MA' 'TATA'} 

また

strs = {'HAKUNA' 'MATATA'}

使い続けるなら

ind=find(ismember(strs,'KU'))

心配する必要はありません:) 。

于 2013-11-06T01:59:06.403 に答える
5

strcmp および strcmpi 関数は、これを行う最も直接的な方法です。配列を検索します。

strs = {'HA' 'KU' 'LA' 'MA' 'TATA'}
ix = find(strcmp(strs, 'KU'))
于 2012-02-24T15:15:59.047 に答える