# find ( strcmp ( many_different_elements )

5 ビュー (過去 30 日間)
Dave 2021 年 10 月 14 日

Hello, I want to check if any of the elements of a cell CC with 90 elements are in column2 of a matrix w 10k rows. If so, to retrieve the row location.
CC below has four elements
CC={'AB1', 'AB2', 'AB3' ,'AB4'}
I would use
idloc = find(strcmp(databig{:,2}, 'AB1') | strcmp(databig{:,2}, 'AB2') | strcmp(databig{:,2}, 'AB3') | strcmp(databig{:,2}, 'AB4') )
But was wondering if there's a nicer way than to write 90 times in the find line
##### 2 件のコメント表示非表示 1 件の古いコメント
Mitchell Thurston 2021 年 10 月 14 日
I just noticed the end of the first sentence also wanted the row location. The general idea should still work.

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

### 回答 (2 件)

Ryan 2021 年 10 月 14 日
You could create a for loop that checks each element and then do the find outside the four loop for find the rows. Something like this
CC = {'AB1', 'AB2', 'AB3' ,'AB4'};
for ii = 1:length(CC)
idx(:,ii) = strcmp(databig,CC{ii});
end
[idloc,~] = find(idloc);
##### 0 件のコメント表示非表示 -1 件の古いコメント

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

Stephen 2021 年 10 月 14 日

"But was wondering if there's a nicer way than to write 90 times in the find line"
Of course: forget about repeated STRCMP calls (e.g. in a loop), just use one ISMEMBER call:
Read its documentation and pay careful attention to the order of its inputs and outputs.
X = ismember(databig(:,2),CC)

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

### Community Treasure Hunt

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

Start Hunting!

Translated by